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

これは、最初にすべての個々のアレイを連結して1つの大きなアレイを作成するよりもはるかに効率的です。

于 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

List配列の代わりにバイトを実行できます。

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

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