2015-11-23 130 views
0

使用Hex Editor请参阅本文件:为什么我的2个字节(0x00 0x40)应该是64而不是16384?

Hex dump

我读了2个字节是这样的:

BinaryReader binaryReader; 
int wlen = binaryReader.ReadUInt16(); 

当我读到这2个字节我BinaryReader.BaseStream.Position14,但wlen = 16384这应该是64.我做错了什么?

+7

我会给你一个提示... 0x4000的== 16384,需要交换的字节数。 –

+0

显示*真实*代码。这个片段只会产生一个'NullReferenceException'。 –

+1

@Ron说了什么。在开始解析任意字节之前,了解字节顺序。 – CodeCaster

回答

3

你的数据文件似乎是由一些big-endian刻录机上生产,而BinaryReader读取数据assuming the little-endian representation

如果您可以控制文件的格式,那么更改编写器以生成小尾数表示可以让您避免更改C#程序。

也有几种方式可以读取.NET中的big-endian数据。你可以使用BitConverter,但手动扭转字节可能是最高效的一个:

​​
相关问题