3

使用 System.IO.BinaryReader 读取二进制文件时,使用任何多字节读取方法时,字节顺序似乎不受影响。

BinaryReader br = new BinaryReader(fs, System.Text.Encoding.BigEndianUnicode);

BinaryReader br = new BinaryReader(fs, System.Text.Encoding.Unicode);

正在为我产生相同的结果。

这让我很沮丧,因为我在读取数据结构时必须不断地反转字节顺序。

屏幕截图 - Big Endian Unicode

截图 - Little Endian Unicode

我已经在 .NET 3 到 4.5 上对此进行了测试

4

1 回答 1

8

BinaryReaderEncoding在处理string数据时使用(几乎,只是ReadString())。ReadBytes等不涉及Encoding- 它只是读取二进制数据。由于您只调用ReadBytes,因此 this ( Encoding) 永远不会被查看。

如果数据是无序的,那么听起来文件不是用BinaryWriter. 如果它不是用 then 创建的,BinaryWriter那么BinaryReader可能不是那么有用 - 你可以只使用Stream.

于 2012-10-16T05:20:51.410 回答