2

我有一个字节列表:

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其所有字节转换为单个 Byte() 以用于Stream.Write

4

3 回答 3

7

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

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

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

于 2013-02-19T15:38:46.113 回答
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()
于 2013-02-19T15:47:36.307 回答
1

你可以做ListBytes 而不是数组:

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

Data = DataList.ToArray()
于 2013-02-19T15:43:33.617 回答