2

我正在尝试使用 c# BinaryWriter 和 BinaryReader 类编写和读取二进制文件。当我将字符串存储在文件中时,它会正确存储它,但是当我尝试读取它时,它会返回一个字符串,该字符串在字符串中的每个备用位置都有 '\0' 字符。

这是代码:

 public void writeBinary(BinaryWriter bw)
 {
     bw.Write("Hello");
 }

 public void readBinary(BinaryReader br)
 {
     BinaryReader br = new BinaryReader(fs);
     String s;
     s = br.ReadString();
  }

这里 s 的值为 = "H\0e\0l\0l\0o\0"。

4

1 回答 1

4

您在读取和写入文件时使用了不同的编码。

您在编写文件时使用的是 UTF-16,因此每个字符都以 16 位字符代码结尾,即两个字节。

您在读取文件时使用的是 UTF-8 或某些 8 位编码,因此每个字节都会以一个字符结尾。

选择一种编码并用于读取和写入文件。

于 2014-02-16T01:55:16.370 回答