如何将字节数组转换为int数组?

时间:2012-06-20 02:54:48

标签: c# arrays

如何将字节数组转换为int数组?我有一个包含144个项目的字节数组,由于我的经验不足,我尝试的方法效率很低。如果之前已经回答过,我很抱歉,但我无法在任何地方找到一个好的答案。

3 个答案:

答案 0 :(得分:25)

简单:

//Where yourBytes is an initialized byte array.
int[] bytesAsInts = yourBytes.Select(x => (int)x).ToArray();

确保包含System.Linq使用声明:

using System.Linq;

如果LINQ不是你的事,你可以改用它:

int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c);

答案 1 :(得分:5)

我知道这是一个老帖子,但是如果你在第一个地方查找一个以字节数组形式打包的整数数组(它可能会考虑144个元素的数组字节),这是一种方法做到这一点:

var size = bytes.Count() / sizeof (int);
var ints = new int[size];
for (var index = 0; index < size; index++)
{
    ints[index] = BitConverter.ToInt32(bytes, index * sizeof (int));
}

注意:如果需要,请注意字节顺序。 (在大多数情况下,它会)

答案 2 :(得分:1)

使用Buffer.BlockCopy代替Array.ConvertAll。

ref Converting an int[] to byte[] in C#

byte[] bytes = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8 };
int[]  ints= Array.ConvertAll(bytes, Convert.ToInt32);

将返回整数[] = {0x1、0x2、0x3、0x4、0x5、0x6、0x7、0x8},

不返回整数[] = {0x04030201,0x08070605}

应使用 Buffer.BlockCopy(bytes,0,ints,0,bytes.Length);