在C#中将int []转换为byte []

时间:2011-05-05 11:04:43

标签: c# arrays type-conversion

我知道如何做到这一点:通过创建一个必要大小的字节数组并使用for循环来转换int数组中的每个元素。

我想知道是否有更快的方式,因为如果int大于sbyte,上述方法似乎会中断。

3 个答案:

答案 0 :(得分:84)

如果你想要一个按位复制,即从一个int中获取4个字节,那么使用Buffer.BlockCopy

byte[] result = new byte[intArray.Length * sizeof(int)];
Buffer.BlockCopy(intArray, 0, result, 0, result.Length);

不要使用Array.Copy,因为它会尝试转换而不仅仅是复制。有关详细信息,请参阅MSDN页面上的备注。

答案 1 :(得分:4)

除了已接受的答案(我现在正在使用)之外,Linq爱好者的替代单行将是:

byte[] bytes = ints.SelectMany(BitConverter.GetBytes).ToArray(); 

但我想,它会慢一些......

答案 2 :(得分:-1)

int[] ints = { 1, 2, 3, 4, 5, 6 };
byte[] bytes = ints.Select(x => (byte)x).ToArray();