将BYTE数组转换为INT
我有这种代码
static void Main(string[] args) { byte[] array = new byte[2] { 0x00, 0x1f }; Console.WriteLine(BitConverter.ToInt32(array, 0)); }
但它不起作用。 它引发了一个例外:
目标数组不够长,无法复制集合中的所有项目。 检查数组索引和长度。
怎么了?
顾名思义, Int32
是32位或4字节,因此如果要将字节数组转换为Int32
,则需要长度至少为4,(或者更准确地说,它需要至少4个)起始位置后的字节数)。
如果你只有两个字节,也许你想使用ToInt16
?
Int32
由4个字节组成,但该数组只有2个。解决此问题的一种方法是首先转换为Int16
然后转换为Int32
Console.WriteLine((Int32)(BitConverter.ToInt16(array, 0)));
请注意,在此特定用法中,从Int16
转换为Int32
不会更改任何内容,因为数字打印相同。
BitConverter.ToInt32
上的文档说:
ToInt32方法将索引startIndex到startIndex + 3的字节转换为Int32值。
您需要指定至少4个字节,但您只需要2个字节。