私はKVPに格納するために文字列にシリアル化する必要があるデータをたくさん持っています。私は、ints
、bools
、および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
文字列が空の文字列である理由です推測しています。
私は何をしようとしていますか?私は、integers
、booleans
、およびfloats
の約650バイトを持っています。私はそれらを文字列に保存する必要があります。 1つのステップとして、5つのレベルがあるので、個々のキーを節約するために、これらの5つをカンマ区切りで1つのKVPに分けたいと思います。
ASCIIは、任意のオクテットをエンコードすることを許可していません(これは7ビットの文字セットです)。これを適切なASCII文字列にしたい場合は、おそらくbase64などを使用したいと思うかもしれません。私はC#のエキスパートではありません(実際にはこれを使用しませんでした)が、ゼロの一部またはすべての理由かもしれません - それらはASCIIで直接エンコードできないバイトです。 –
ありがとうBJ、私はもう少しテストをする必要がありますが、一見すると、それは問題になるかもしれません! – MOrlando616
0をASCIIとしてデコードすると、文字列にU + 0000が表示されます。 'm_LevelCode'の長さは' bytes'と同じでなければなりません。なぜなら、UTF-16はASCIIが1つのコード単位( 'char')として提供できる任意の文字をエンコードするからです。 –