如何在 C# 中将 List<byte> 转换为 byte[]?

Posted

技术标签:

【中文标题】如何在 C# 中将 List<byte> 转换为 byte[]?【英文标题】:How can I convert List<byte> to byte[] in C#? 【发布时间】:2011-05-25 03:27:30 【问题描述】:

我可以通过for 循环进行转换吗?

有没有更好的方法?

 for (int i = 0; i < myListByte.Count ;i++)
 
     myArryByte[i] = myListByte[i];
 

【问题讨论】:

是否可以切换到 C# 3.0?如果是,请使用ToArray 方法,如果不是,请使用旧的“创建数组,在 foreach 循环中复制值”方法 @Dyppl:ToArray 在 2.0 中可用于 List。没有必要为此切换到 3.0。此外,人们不会为了单一的便利功能而切换框架。 @Paul Sasik:你说得对,我完全忘记了这一点,并且确信人们指的是 LINQ 扩展方法。谢谢! 记住 List 和 IList 有不同的方法,而 IList 没有 ToArray()... 就个人而言,对于处理二进制数据,我建议使用MemoryStream 而不是List&lt;byte&gt;。然后您可以使用GetBuffer() 访问 oversized 后备缓冲区,而无需额外分配;你只需要记住只从中读取.Length 字节;p 【参考方案1】:
myArryByte = myListByte.ToArray();

【讨论】:

【参考方案2】:
List<byte> bytes = ...;

byte[] bArrary = bytes.ToArray();

【讨论】:

【参考方案3】:

使用 List 对象的ToArray method。

【讨论】:

【参考方案4】:
byte[] arr = myListByte.ToArray();

【讨论】:

【参考方案5】:

这可能是您正在寻找的:

private void convertByteArray()

    List<byte> byteList = new List<byte>() 2, 3, 4;
    byte[] byteArray = byteList.ToArray<byte>();

【讨论】:

以上是关于如何在 C# 中将 List<byte> 转换为 byte[]?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将 List<object> 转换为 Hashtable?

如何在 .NET 6 / C# 10 中将 List<String?> 转换为 List<String>?

如何在 C# 中将 IEnumerable<T> 转换为 List<T>?

如何在 C++ CLR 中将数组<System::Byte> 转换为 char*?

通过套接字编程在 C# 中使用动态字节数组 [List<byte> 不起作用]

在 C# 中将 List<List<T>> 转换为 List<T>