【问题标题】:How can I convert List<byte> to byte[] in C#?如何在 C# 中将 List<byte> 转换为 byte[]?
【发布时间】: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

标签: c# list c#-2.0 byte


【解决方案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>();
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-03-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-03
            • 2011-06-08
            相关资源
            最近更新 更多