1

そのため、バイナリ ファイルに書き込むすべての文字列の後に 0x00 を 2 つ追加しようとしています。

bw.Write(enc.GetBytes(listView1.Items[i].SubItems[1].Text + '\0' + '\0'));
bw.Write(enc.GetBytes(listView1.Items[i].SubItems[1].Text + "\0"));
bw.Write(enc.GetBytes(listView1.Items[i].SubItems[1].Text + (new string('\0', 2))));

しかし、それらはすべて同じ結果になります。使用できる別の Unicode エスケープはありますか? または、これらの行で何か間違ったことをしていますか? 余談ですが、String enc = Encoding.Unicode

4

1 に答える 1

1

あなたがしていることはうまくいくはずです。このテスト コードは、次のことを示しています。

string test = "X" + '\0' + '\0';
Console.WriteLine(test.Length); // Prints 3
var bytes = Encoding.Unicode.GetBytes(test);
Console.WriteLine(bytes.Length); // Prints 6

bytes次のバイト値が含まれています: 88, 0, 0, 0, 0, 0- これは正しいです。

したがって、コードのどこかに問題があると思います。

于 2013-07-23T10:38:31.573 に答える