2012-06-20 102 views
12

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

+1

什么是你已经尝试的途径? – Marlon

+0

刚才提到 - 字节是8位,int是32位,并且您正在将一个字节转换为int。 – Bakudan

回答

22

简单:

//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); 
+0

我得到一个错误:'byte []'不包含'Select'的定义,没有扩展方法'Select'接受类型'byte []'的第一个参数'可以找到(您是否缺少使用指令或程序集引用?) – user1166981

+0

@ user1166981:请确保在您的项目中引用'System.Linq'。 (顺便说一句,您的.NET框架是哪个版本的?) – Ryan

+0

好的,删除了错误,谢谢 – user1166981

4

我知道这是一个旧的帖子,但如果你正在寻找第一个获得整数数组的包字节数组ED(它可以考虑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)); 
} 

注:在需要时采取的存储方式的照顾。 (而在它最的情况下)

+0

不错,一直在寻找这个。人们似乎忘记了(int)byteVar与将bytearray转换为int(例如,一个int为4个字节)不一样 – Sliver2009

+1

有一个更好的解决方案:https://stackoverflow.com/a/5896716/238419问题是关于'int []'到'byte []',但是这个解决方案应该工作 –

0

现在是简单的像如下,

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