如何在 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<byte>
。然后您可以使用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*?