使用 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/

10-11 19:06