2016-09-12 6 views
0

私はKVPに​​格納するために文字列にシリアル化する必要があるデータをたくさん持っています。私は、intsbools、およびfloatsのトンを持っています。私はそれぞれbyte[]に私がBuffer.BlockCopyingであることをBitConverterそれを取る単一の大きいbyte[]に。任意のバイト配列を文字列として保存する

私はKeyValuePair<string, string>に文字列としてバイトのこの大規模な配列を保存する必要があります。私はbyte[]を作成した後にEncoding.ASCII.GetString()を使ってみました。Encoding.ASCII.GetBytes()を使って達成した文字列コードでレベルをリロードしようとしました。

m_LevelCode = Encoding.ASCII.GetString(bytes); 

バイトの配列は0のトンを持っているので、私は私のm_LevelCode文字列が空の文字列である理由です推測しています。

私は何をしようとしていますか?私は、integersbooleans、およびfloatsの約650バイトを持っています。私はそれらを文字列に保存する必要があります。 1つのステップとして、5つのレベルがあるので、個々のキーを節約するために、これらの5つをカンマ区切りで1つのKVPに分けたいと思います。

+2

ASCIIは、任意のオクテットをエンコードすることを許可していません(これは7ビットの文字セットです)。これを適切なASCII文字列にしたい場合は、おそらくbase64などを使用したいと思うかもしれません。私はC#のエキスパートではありません(実際にはこれを使用しませんでした)が、ゼロの一部またはすべての理由かもしれません - それらはASCIIで直接エンコードできないバイトです。 –

+0

ありがとうBJ、私はもう少しテストをする必要がありますが、一見すると、それは問題になるかもしれません! – MOrlando616

+0

0をASCIIとしてデコードすると、文字列にU + 0000が表示されます。 'm_LevelCode'の長さは' bytes'と同じでなければなりません。なぜなら、UTF-16はASCIIが1つのコード単位( 'char')として提供できる任意の文字をエンコードするからです。 –

答えて

0

文字列bytesをバイト配列である

string base64 = Convert.ToBase64String(bytes); 

string hex = BitConverter.ToString(bytes); 

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

にバイトを変換する多くの方法があります。

関連する問題