2016-09-12 3 views
0

저는 KVP에 저장하기 위해 일련 번호로 일련 화해야하는 데이터가 있습니다. 나는 ints, boolsfloats 톤을 받았습니다. 나는 각각 하나씩 가지고, 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, booleansfloats을 가지고 있습니다. 나는 그 (것)들을 끈으로 저장 될 필요가있다. 한 걸음 더 나아가, 나는 모든 영역이 5 단계이므로 개별 키를 보존하기 위해 이들 중 5 개를 단일 KVP로 쉼표로 구분하고 싶습니다.

+2

ASCII는 임의의 옥텟을 인코딩 할 수 없습니다 (7 비트 문자 세트). 적절한 ASCII 문자열을 원하면 base64 나 그와 비슷한 것을 사용하고 싶을 것입니다. 나는 C# 전문가가 아니기 때문에 (실제로는 사용하지 않았지만), 그것은 0의 일부 또는 전부를위한 이유 일 수 있습니다 - 그들은 ASCII로 직접 인코딩 할 수없는 바이트입니다. –

+0

고마워요. BJ, 몇 가지 더 테스트해야하지만, 언뜻보기에는 문제가 될 수 있습니다! – MOrlando616

+0

0을 ASCII로 디코딩하면 문자열에 U + 0000이 표시됩니다. 'm_LevelCode'의 길이는'bytes'와 같아야합니다. 왜냐하면 UTF-16은 ASCII가 하나의 코드 단위 ('char')로 제공 할 수있는 모든 문자를 인코딩하기 때문입니다. –

답변

0

bytes는 바이트 배열 인 문자열

string base64 = Convert.ToBase64String(bytes); 

string hex = BitConverter.ToString(bytes); 

var jss = new JavaScriptSerializer(); 
string json = jss.Serialize(bytes); 

에 바이트를 변환하는 방법에는 여러 가지가 있습니다.

관련 문제