如何将字节数组转换为int数组?我有一个包含 144 个项目的字节数组,由于我的经验不足,我尝试过的方法效率很低。很抱歉,如果之前已经回答过这个问题,但我在任何地方都找不到好的答案。
问问题
37084 次
4 回答
35
简单的:
//Where yourBytes is an initialized byte array.
int[] bytesAsInts = yourBytes.Select(x => (int)x).ToArray();
确保包含System.Linq
using 声明:
using System.Linq;
如果 LINQ 不是你的东西,你可以使用它来代替:
int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c);
于 2012-06-20T02:57:31.127 回答
11
我知道这是一篇旧文章,但是如果您首先要获取一个打包在字节数组中的整数数组(并且可能正在考虑您的 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));
}
注意:如果需要,请注意字节顺序。(在大多数情况下它会)
于 2016-10-25T12:21:33.917 回答
6
现在很简单,如下所示,
int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32);
于 2018-02-26T10:43:44.483 回答
5
使用 Buffer.BlockCopy 而不是 Array.ConvertAll。
byte[] bytes = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8 };
int[] ints= Array.ConvertAll(bytes, Convert.ToInt32);
将返回 ints[]={0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8},
不返回整数 []={0x04030201,0x08070605}
应该使用 Buffer.BlockCopy(bytes, 0, ints, 0, bytes.Length);
于 2020-07-05T16:03:18.810 回答