在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();