簡體   English   中英

如何將IEnumerable轉換為字節數組

[英]How to convert IEnumerable to byte array

我需要將多個數組合並為一個。 我發現這似乎是執行此操作的好方法:

IEnumerable<byte> Combine(byte[] a1, byte[] a2, byte[] a3)
{
    foreach (byte b in a1)
        yield return b;
    foreach (byte b in a2)
        yield return b;
    foreach (byte b in a3)
        yield return b;
}

但是,我對IEnumerable不太熟悉。 如何將結果轉換回byte[]以便可以進一步處理?

謝謝。

而不是僅通過linq的.Concat進行迭代:

var joint = a1.Concat(a2).Concat(a3);

如果要以數組形式返回:

joint.ToArray();

我會這樣寫:

IEnumerable<T> Combine<T>(params IEnumerable<T>[] stuff)
{
    return stuff.SelectMany(a => a);
}

並合並到單個數組,如下所示:

var a = new byte[] { 0, 1, 2 };
var b = new byte[] { 0, 1, 2 };
var c = new List<byte> { 0, 1, 2 };

var merged = Combine(a, b, c).ToArray();

注意甲板上的小丑-無需將輸入限制為數組。 任何數組T[]都是IEnumerable<T> ,但還有許多其他事情。

暫無
暫無

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

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