23

バイト配列をint配列に変換する方法は?144個のアイテムを保持するバイト配列がありますが、経験が浅いため、試した方法は非常に非効率的です。これまでに回答があった場合は申し訳ありませんが、どこにも良い回答が見つかりませんでした。

4

4 に答える 4

35

単純:

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

System.Linqusing宣言に必ず含めてください。

using System.Linq;

また、LINQが適切でない場合は、代わりにこれを使用できます。

int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c);
于 2012-06-20T02:57:31.127 に答える
11

私はこれが古い投稿であることを知っていましたが、そもそも整数の配列をバイト配列にパックすることを探していた場合(そして、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));
}

注:必要に応じて、エンディアンに注意してください。(そしてほとんどの場合それはそうなるでしょう)

于 2016-10-25T12:21:33.917 に答える
6

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

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32);
于 2018-02-26T10:43:44.483 に答える
5

Array.ConvertAllの代わりにBuffer.BlockCopyを使用します。

ref C#でint[]をbyte[]に変換する

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}を返します。

ints []={0x04030201,0x08070605}を返さない

Buffer.BlockCopy(bytes、0、ints、0、bytes.Length);を使用する必要があります。

于 2020-07-05T16:03:18.810 に答える