[英]Converting an int[] to byte[] in C#
我知道如何做到这一点:通过创建一个必要大小的字节数组并使用 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 爱好者的另一种单行代码是:
byte[] bytes = ints.SelectMany(BitConverter.GetBytes).ToArray();
不过,我想它会慢一些...
int[] ints = { 1, 2, 3, 4, 5, 6 };
byte[] bytes = ints.Select(x => (byte)x).ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.