c#中的BinaryReader在字符串的所有字符之间读取”

BinaryReader in c# reads '' between all characters of a string

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

这是代码:

1
2
3
4
5
6
7
8
9
10
11
 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"。


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

在写入文件时使用的是UTF-16,因此每个字符最终都是16位字符代码,即两个字节。

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

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