[英]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.