【问题标题】:How to Convert a byte array into an int array?如何将字节数组转换为int数组?
【发布时间】:2020-07-06 00:03:18
【问题描述】:

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

【问题讨论】:

  • 你尝试过哪些方法?
  • 顺便提一下 - byte 是 8 位,int 是 32 位,而您正在将 byte 转换为 int。所有转换后的整数的范围都在 0 到 255 之间。

标签: c# arrays


【解决方案1】:

简单:

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

确保在 using 声明中包含 System.Linq

using System.Linq;

如果你不喜欢 LINQ,你可以改用它:

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

【讨论】:

  • 我收到一个错误:“byte[]”不包含“Select”的定义,并且找不到接受“byte[]”类型的第一个参数的扩展方法“Select”(是您缺少 using 指令或程序集引用?)
  • @user1166981:确保在您的项目中引用System.Linq。 (顺便问一下,您的目标是哪个版本的 .NET 框架?)
  • 这种方法很慢:Linq 没有针对byte 块副本进行优化。执行int[] bytesAsInts = new int[ yourBytes.Length / 2 ]; Buffer.BlockCopy( yourBytes, 0, bytesAsInts, 0, yourBytes.Length );快得多
【解决方案2】:

我知道这是一篇旧帖子,但是如果您首先要获取一个包含在字节数组中的整数数组(并且可能正在考虑您的 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));
}

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

【讨论】:

  • 不错,正在找这个。人们似乎忘记了 (int)byteVar 与将 bytearray 转换为 int 不同(例如,一个 int 需要 4 个字节)
  • 有一个更好的解决方案:stackoverflow.com/a/5896716/238419 这个问题是关于int[]byte[] 但是这个解决方案无论如何都应该有效
【解决方案3】:

现在很简单,如下所示,

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32);

【讨论】:

    【解决方案4】:

    使用 Buffer.BlockCopy 代替 Array.ConvertAll。

    参考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);
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-20
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多