1

所以我试图在我在二进制文件中写入的每个字符串之后添加两个 0x00,这些是我尝试过的(每行尝试 1 次),但我总是在每个字符串之后只有一个 0x00:

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 回答