[英]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.