【问题标题】:Error in converting byte array to int array in C#在 C# 中将字节数组转换为 int 数组时出错
【发布时间】:2012-04-26 19:38:56
【问题描述】:

我正在尝试将字节数组转换为 int 数组,然后将字节数组转换回 int 数组。

为了从字节数组转换为整数数组,我使用了以下代码:

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.

但是当从byte数组转换为int数组时,iArray2数组中的值大于256时iArray2数组中的值变为false(可能是溢出,我不知道。 )

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

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

【问题讨论】:

  • 一个字节存储从 0 到 255 的值。当从整数值(例如 1000)转换时,您希望生成的字节具有什么值?

标签: c# byte


【解决方案1】:

Buffer.BlockCopy 始终以 字节 为单位,而不是数组单位。

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

【讨论】:

  • @HeshamAbouelsoaod:通过传递正确的长度以字节为单位
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
相关资源
最近更新 更多