在C#中将字节数组转换为整型数组时出现错误

6

我将尝试将一个字节数组转换为整数数组,然后再将字节数组转换回整数数组。

使用以下代码将字节数组转换为整数数组:

int[] iArray = new int[someSize];
byte[] bArray = new byte[iArray.Length * sizeof(int)];
Buffer.BlockCopy(iArray, 0,bArray, 0, bArray.Length); // This code works correctly.

但是在将字节数组转换为整数数组时,当iArray中的值大于256时(可能是溢出,我不确定),iArray2数组中的值就变得错误了。

// What is the error in this code?.
int iArray2 = new int[someSize];
Buffer.BlockCopy(bArray, 0, iArray2, 0, iArray2.Length);

如何正确地将字节数组转换为整数数组?

2
一个字节可以存储从0到255的值。如果将一个整数值(比如1000)转换为字节,你会期望得到什么值? - Chris Shain
1个回答

7
< p > Buffer.BlockCopy 总是处理字节,而不是数组单位。

因此,当您在第二个 BlockCopy() 调用中传递 iArray2.Length 时,您正在复制那么多个字节,这相当于您实际数组的四分之一。


通过传递正确的字节长度。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接