BitConverter在应该使用小端序时使用了Big

本文关键字:Big BitConverter | 更新日期: 2023-09-27 18:12:23

我有一个文件,我正在读取两个字节。(03, 0 e)。我使用二进制读取器来获取我的字节

 reader.ReadBytes( 2 ), 0 )//[0] = 03  and [1] = 0E

则转换为

 BitConverter.ToInt16( reader.ReadBytes( 2 ), 0 )

转换有小端序设置为true,所以如果我错了,请纠正我,但这意味着0x03然后0x0E,我的结果应该是十进制的782,但它显示为3587。我检查了即时窗口,它的转换器正在交换。我肯定漏掉了什么,但我不知道是什么?

BitConverter在应该使用小端序时使用了Big

你搞反了。来自文档:

"Big-endian"表示最高位字节位于单词的左端。"Little-endian"表示最高位字节位于单词的右端。

因此,在小端系统中读取{03},{0E}意味着0E最重要的字节,因此,当读入2字节结构时,它表示十六进制的0E03,或十进制的3587。