C# .NET二进制读取器不遵守编码

C# .NET二进制读取器不遵守编码,c#,.net,unicode,binary,endianness,C#,.net,Unicode,Binary,Endianness,使用System.IO.BinaryReader读取二进制文件时,使用任何多字节读取方法时,字节顺序似乎不受影响 BinaryReader br = new BinaryReader(fs, System.Text.Encoding.BigEndianUnicode); 及 都在为我产生同样的结果 这让我非常沮丧,因为在读取数据结构时,我必须不断地反转字节顺序 我已经在.NET3到4.5上测试了这个问题,BinaryReader在处理字符串数据时只使用编码(基本上就是ReadString(

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

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

都在为我产生同样的结果

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


我已经在.NET3到4.5上测试了这个问题,BinaryReader在处理
字符串
数据时只使用
编码(基本上就是
ReadString()
ReadBytes
etc不涉及
编码
——它只读取二进制数据。由于只调用
ReadBytes
,因此此(
Encoding
)无法查看


如果数据顺序不正确,那么听起来文件不是用
BinaryWriter
创建的。如果它不是用
BinaryWriter
创建的,那么
BinaryReader
可能就没那么有用了——你可以使用
Stream

我假设BinaryRead只对文本文件有效,但从代码中的块来看,文件似乎是二进制的。然后,据我所知,您必须使用Convert类对其进行手工编码,或者看看这里:如果您也为读取器指定编码,结果会是什么?如果您知道格式,类似BinaryReader的类仍然很有用-但是如果您需要切换endianness,EndianBinaryReader就是您想要的,来自MiscUtil:)
BinaryReader br = new BinaryReader(fs, System.Text.Encoding.Unicode);