我知道如何做到这一点:通过创建一个必要大小的字节数组并使用for循环来转换int数组中的每个元素。
我想知道是否有更快的方式,因为如果int
大于sbyte
,上述方法似乎会中断。
答案 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();