使用 System.IO.BinaryReader 读取二进制文件时,使用任何多字节读取方法时,字节顺序似乎不受影响。
BinaryReader br = new BinaryReader(fs, System.Text.Encoding.BigEndianUnicode);
和
BinaryReader br = new BinaryReader(fs, System.Text.Encoding.Unicode);
正在为我产生相同的结果。
这让我很沮丧,因为我必须在读取数据结构时不断反转字节顺序。
Screenshot - Big Endian Unicode
Screenshot - Little Endian Unicode
我已经在 .NET 3 到 4.5 上测试过了
最佳答案
BinaryReader
仅在处理 Encoding
数据时使用 string
(几乎就是 ReadString()
)。 ReadBytes
等不涉及 Encoding
- 它只是读取二进制数据。由于您只调用 ReadBytes
,因此此 ( Encoding
) 永远不会被查看。
如果数据乱序,那么听起来该文件不是用 BinaryWriter
创建的。如果它不是用 BinaryWriter
创建的,那么 BinaryReader
可能不是那么有用——你可以只使用 Stream
。
关于c# - .NET BinaryReader 不遵守编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12907677/