繁体   English   中英

字节数组十六进制到十进制的转换

[英]Conversion of byte array hex to decimal

我有一个带有十六进制值的字节数组,例如:

var b = new byte[] {0x27, 0x01, 0x00, 0x00};

我需要将其转换为十进制值,但是当我在下面使用代码时,得到意想不到的结果。 预期为295,但结果为654376960。

if (BitConverter.IsLittleEndian) Array.Reverse(b);
//int myInt = b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24);
int value = BitConverter.ToInt32(b, 0);

怎么了?

基本上,您对字节序的理解是错误的-您的示例已经采用了小字节序格式,因此,只有在BitConverter期望使用大字节序格式时,才应将其反转。 您只需要反转条件即可:

if (!BitConverter.IsLittleEndian) Array.Reverse(b);

(我本人将if语句的主体放在大括号和换行符中,但这是另一回事。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM