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

use*_*981 16 c# arrays

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

vcs*_*nes 26

简单:

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

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

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

如果LINQ不是你的东西,你可以使用它:

int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c);
Run Code Online (Sandbox Code Playgroud)


wad*_*.ec 10

使用 Buffer.BlockCopy 而不是 Array.ConvertAll。

ref在 C# 中将 int[] 转换为 byte[]

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

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

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

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


Dim*_*tha 9

现在很简单,如下所示,

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32);
Run Code Online (Sandbox Code Playgroud)


Kev*_*lou 7

我知道这是一个老帖子,但是如果你在第一个地方查找一个以字节数组形式打包的整数数组(并且它可以考虑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));
}
Run Code Online (Sandbox Code Playgroud)

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

  • 有一个更好的解决方案:/sf/answers/412770151/ 这个问题是关于 `int[]` 到 `byte[]` 但无论如何这个解决方案都应该有效 (2认同)