5

我正在尝试将字节数组转换为 int 值,但是出现异常:

“目标数组不够长,无法复制集合中的所有项目。请检查数组索引和长度。”

例外是在线:

int length = BitConverter.ToInt32(bytes_length, 0);

byte _length 包含值(0x00,0x09);

这是我的代码:

byte[] bytes_length = new byte[Value_of_length];                   
//copy the byte byte array to the correct length.
Array.Copy(data, Place_of_length, bytes_length, 0,bytes_length.Length
int length = BitConverter.ToInt32(bytes_length, 0);
4

1 回答 1

13

Int32需要 32 位或 4 个字节。您的数组仅包含两个字节,这意味着您无法将其转换为Int32.

您可以将其转换为Int16

int length = BitConverter.ToInt16(bytes_length, 0);

或在转换之前将两个字节扩展至数组Int32

此外,您可以完全跳过复制:

int length = BitConverter.ToInt16(data, Place_of_length);
于 2015-12-31T14:16:10.593 回答