私はこれを長い間行う方法を知っています:必要なサイズのバイト配列を作成し、forループを使用してint配列からすべての要素をキャストします。
int
がsbyte
よりも大きい場合、上記の方法は壊れると思われるため、より高速な方法があるかどうか疑問に思っていました。
ビット単位のコピーが必要な場合、つまり1つのintから4バイトを取得する場合は、 Buffer.BlockCopy
を使用します。
byte[] result = new byte[intArray.Length * sizeof(int)];
Buffer.BlockCopy(intArray, 0, result, 0, result.Length);
Array.Copy
は使用しないでください。コピーするだけでなく、変換しようとするからです。詳細については、MSDNページの備考を参照してください。
受け入れられている回答(現在使用している)に加えて、Linqの愛好家向けの代替ワンライナーは次のようになります。
byte[] bytes = ints.SelectMany(BitConverter.GetBytes).ToArray();
しかし、私はそれが遅くなると思う...