我有一个字节列表:
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
中使用?
答案 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()