저는 KVP에 저장하기 위해 일련 번호로 일련 화해야하는 데이터가 있습니다. 나는 ints
, bools
및 floats
톤을 받았습니다. 나는 각각 하나씩 가지고, byte[]
에 BitConverter을 가지고 있는데, Buffer.BlockCopying
은 하나의 큰 byte[]
에 들어있다.임의의 바이트 배열을 문자열로 저장합니다.
이 큰 배열을 KeyValuePair<string, string>
에 문자열로 저장해야합니다. 나는 byte[]
을 작성한 Encoding.ASCII.GetString()
을 사용해 보았습니다. 그런 다음 Encoding.ASCII.GetBytes()
을 사용하여 달성 한 문자열 코드로 레벨을 다시로드하려고했습니다.
m_LevelCode = Encoding.ASCII.GetString(bytes);
바이트의 배열은 0의 톤을 가지고, 그래서 난 내 m_LevelCode
문자열이 빈 문자열 그 이유는 추측하고있다.
더 나은 방법이 있습니까? 저는 약 650 바이트의 integers
, booleans
및 floats
을 가지고 있습니다. 나는 그 (것)들을 끈으로 저장 될 필요가있다. 한 걸음 더 나아가, 나는 모든 영역이 5 단계이므로 개별 키를 보존하기 위해 이들 중 5 개를 단일 KVP로 쉼표로 구분하고 싶습니다.
ASCII는 임의의 옥텟을 인코딩 할 수 없습니다 (7 비트 문자 세트). 적절한 ASCII 문자열을 원하면 base64 나 그와 비슷한 것을 사용하고 싶을 것입니다. 나는 C# 전문가가 아니기 때문에 (실제로는 사용하지 않았지만), 그것은 0의 일부 또는 전부를위한 이유 일 수 있습니다 - 그들은 ASCII로 직접 인코딩 할 수없는 바이트입니다. –
고마워요. BJ, 몇 가지 더 테스트해야하지만, 언뜻보기에는 문제가 될 수 있습니다! – MOrlando616
0을 ASCII로 디코딩하면 문자열에 U + 0000이 표시됩니다. 'm_LevelCode'의 길이는'bytes'와 같아야합니다. 왜냐하면 UTF-16은 ASCII가 하나의 코드 단위 ('char')로 제공 할 수있는 모든 문자를 인코딩하기 때문입니다. –