[英]Convert List<byte[]> to one byte[] array
如何在一個byte[]
數組或一個Stream
轉換List<byte[]>
?
SelectMany
應該做的訣竅:
var listOfArrays = new List<byte[]>();
byte[] array = listOfArrays
.SelectMany(a => a)
.ToArray();
var myList = new List<byte>();
var myArray = myList.ToArray();
編輯:好的,事實證明問題實際上是關於List<byte[]>
- 在這種情況下,您需要使用SelectMany將序列序列展平為單個序列。
var listOfArrays = new List<byte[]>();
var flattenedList = listOfArrays.SelectMany(bytes => bytes);
var byteArray = flattenedList.ToArray();
文檔來自http://msdn.microsoft.com/en-us/library/system.linq.enumerable.selectmany.aspx
您可以使用List <T> .ToArray() 。
這可能有點草率,可以使用一些優化,但你得到它的要點
var buffers = new List<byte[]>();
int totalLength = buffers.Sum<byte[]>( buffer => buffer.Length );
byte[] fullBuffer = new byte[totalLength];
int insertPosition = 0;
foreach( byte[] buffer in buffers )
{
buffer.CopyTo( fullBuffer, insertPosition );
insertPosition += buffer.Length;
}
如果您使用的是實際的類System.Collections.Generic.List<byte>
,請調用ToArray()。 它返回一個新的byte[]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.