我有这样的代码转换字节数组INT
static void Main(string[] args)
{
byte[] array = new byte[2] { 0x00, 0x1f };
Console.WriteLine(BitConverter.ToInt32(array, 0));
}
但是它不工作。它引发一个异常:
目标数组不足以复制 集合中的所有项目。检查数组索引和长度。
出了什么问题?
我有这样的代码转换字节数组INT
static void Main(string[] args)
{
byte[] array = new byte[2] { 0x00, 0x1f };
Console.WriteLine(BitConverter.ToInt32(array, 0));
}
但是它不工作。它引发一个异常:
目标数组不足以复制 集合中的所有项目。检查数组索引和长度。
出了什么问题?
上BitConverter.ToInt32
的documentation说:
的ToInt32方法从索引的startIndex到的startIndex + 3字节转换为Int32值。
您需要指定至少4个字节,但你只有2
的Int32
是由4个字节,但是阵列只有2之一来解决此方法是先转换成Int16
然后Int32
Console.WriteLine((Int32)(BitConverter.ToInt16(array, 0)));
注意,在这个特定的使用从Int16
转换为Int32
,因为数字打印相同并不能改变什么。
正如写入十进制数字“10”为“0010”不会改变任何其他任何东西:额外的零是毫无意义的,当您将Int16转换为INT32。 – Andrejovich
BitConverter。 ** ToInt32 ** –