簡體   English   中英

轉換清單 <Byte[]> 到字節[]

[英]Convert List<Byte[]> to Byte[]

我使用Gtk#,需要將List<Byte[]>轉換為Byte[] 我在這里找到了此操作的示例,但這是.NET Framework的示例,當我嘗試通過Gtk#進行操作時,出現了一些編譯錯誤:

“類型System.Collections.Generic.List<byte[]>' does not contain a definition for SelectMany' System.Collections.Generic.List<byte[]>' does not contain a definition for ,找不到SelectMany' of type System.Collections.Generic.List'的擴展方法SelectMany' of type (是否缺少using指令或裝配體參考?)(CS1061)”。

如何解決此錯誤,或者我可以使用其他Gtk#的其他轉換方式?

確保:

  1. 您正在使用.NET Framework 3.5或更高版本。
  2. 您有對System.Core的引用。
  3. 您在代碼文件的頂部具有“ using System.Linq”。

IEnumerable的擴展名是.net框架更高版本的一部分,Gtk#可能沒有這些擴展名,或者它們可能是另一個名稱。

一個簡單的(不確定是否有更簡單的方法)方法是計算數組所需的總大小並將其初始化為該大小。 然后遍歷該列表,並通過跟蹤數組有多遠,將每個byte []中的數據放入新的byte []中。

private static Byte[] ConvertList(List<Byte[]> list)
    {
        int totalLength = 0;

        foreach (byte[] b in list)
        {
            totalLength += b.Length;
        }

        byte[] result = new byte[totalLength];

        int currentPosition = 0;

        foreach (byte[] byteArray in list)
        {
            foreach (byte b in byteArray)
            {
                result[currentPosition] = b;
                currentPosition++;
            }
        }

        return result;
    }
private static Byte[] ConvertList(List<Byte[]> list)
    {
        List<Byte> tmpList = new List<byte>();
        foreach (Byte[] byteArray in list)
            foreach (Byte singleByte in byteArray)
                tmpList.Add(singleByte);
        return tmpList.ToArray();
    }

幾乎是其他代碼示例的簡短版本。 經過.Net Framework 2.0測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM