繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM