2012-06-20 157 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);