簡體   English   中英

轉換列表 <byte[]> 到一個字節[]數組

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

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