2

次のコードがあります。

byte [] bytes;
string one_simbol;

bytes = BitConverter.GetBytes (n.GetPixel (x, y). R + n.GetPixel (x, y). G + n.GetPixel (x, y). B);
one_simbol = Encoding.GetEncoding (1251). GetString (bytes, 0, bytes.Length);

// Always in one_simbol any one character
// We do the following

full_text + = one_simbol + one_simbol + one_simbol;

これらの文字をどれだけ追加しても、それらが異なっていても、変数 full_text に格納されるのは最初に追加された1文字だけです

4

1 に答える 1

7

あなたは絶対にこのように使うべきではありませんEncoding。バイト配列エンコードされたテキストではありません-それでは、なぜそれがそうであるかのように振る舞おうとするのですか?任意のバイナリデータがあるため、ラウンドトリップを確実にするために、代わりにbase64(またはおそらく16進数)のようなものを使用する必要があります。

string text = Convert.ToBase64String(bytes);

そうすれば、データを逆にすることができます。これはあなたが望むものだと私は思います。

連結が機能していない理由については、おそらく機能していると思いますが、テキスト内の制御文字などが原因で、正しく表示できません。印刷してみてくださいfull_text.Length、そして私はそれが等しくなると思いone_simbol.Length * 3ます。

于 2012-10-22T11:53:42.960 に答える