字节数组到int C#

Bar*_*eld 5 c# arrays bitconverter

我是triyng将字节数组转换为int值但是我得到一个异常:

"目标数组的长度不足以复制集合中的所有项目.检查数组索引和长度."

例外是在线:

int length = BitConverter.ToInt32(bytes_length, 0);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

das*_*ght 12

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

您可以将其转换为 Int16

int length = BitConverter.ToInt16(bytes_length, 0);
Run Code Online (Sandbox Code Playgroud)

或者在Int32转换之前将两个以上的字节扩展到数组.

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

int length = BitConverter.ToInt16(data, Place_of_length);
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是4个字节?看到你编辑了:) (3认同)