在VB.NET中'列出(Of Byte())'到'Byte()'

时间:2013-02-19 15:35:34

标签: vb.net

我有一个字节列表:

Public Function GenPackets()
    Dim Stream As NetworkStream = ConnectionSocket.GetStream()
    Dim DataList As New List(Of Byte())
    Dim Data As Byte()
    DataList.Add(IntegerToByte(My.Settings.BotUID))

    ' TO DO       Stream.Write(Data, 0, 3)
    Return Data
End Function

如何将DataList及其所有字节转换为单个字节()以便在Stream.Write中使用?

3 个答案:

答案 0 :(得分:7)

无需转换您的数据,只需遍历列表:

For Each buffer As Byte() In Datalist
    yourStream.Write(buffer)
Next

这比首先连接所有单个数组以创建一个大数组要高效得多。

答案 1 :(得分:5)

正如Konrad Rudolph已经写过的那样,您不需要压缩数据以便将其写入流中。

为了完整起见,您可以像这样展平数据列表

Dim dataList As New List(Of Byte())
Dim data As Byte()

data = dataList.SelectMany(Function(x) x).ToArray()

或使用LINQ语法

data = (From bytes In dataList From x In bytes Select x).ToArray()

答案 2 :(得分:1)

您可以执行List字节而不是数组:

Dim DataList As New List(Of Byte)
DataList.AddRange(IntegerToByte(My.Settings.BotUID))

Data = DataList.ToArray()