2012-06-20 41 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'の定義がなく、 'byte' []型の最初の引数を受け入れる拡張メソッド 'Select'はありません。エラーが発生しました。あなたがプロジェクトで 'System.Linq'を参照していることを確認してください。 – user1166981

+0

@ user1166981: (どのバージョンの.NETフレームワークをターゲットにしていますか?) – Ryan

+0

ok thatsがエラーを削除しましたthanks – user1166981

4

これは古い投稿ですが、最初に整数の配列を取得する場合は、packバイト配列に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に変換するのと同じでないことを忘れているようです(例えば、1つのintに対して4バイト) – Sliver2009

+1

もっと良い解決策があります:https://stackoverflow.com/a/5896716/238419質問は 'int []'から 'byte []'ですが、この解決法は関係なく動作するはずです –

0

今、それはのように簡単です、次、

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32); 
関連する問題