在C#中将int 转换为byte

我知道如何做到这一点:创build一个必要大小的字节数组,并使用for循环来投射int数组中的每个元素。

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

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

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

不要使用Array.Copy ,因为它会尝试转换而不仅仅是复制。 请参阅MSDN页面上的备注以获取更多信息。

除了接受的答案(我现在正在使用)之外,Linq爱好者的另一种select是:

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

不过,我认为这会慢一些。

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