使用VB.Net

时间:2018-08-22 01:27:09

标签: arrays vb.net

我想使用VB.NET将两个字节附加到一个字节

这是我的代码,

Dim bytes(5) As Byte
bytes(0) = devid 'variable byte
bytes(1) = &H3
bytes(2) = x1 'variable byte
bytes(3) = x2 'variable byte
bytes(4) = &H0
bytes(5) = &H1

Dim bytescrc() As Byte = CRC(bytes) ' call to crc funtion and store 2 bytes output is { &HFF, &HB5 }

Dim bytesful() As Byte = {bytes, bytescrc}

错误消息为类型'Byte()'的值不能转换为'Byte'。

如何将bytes 6字节数组和bytescrc 2字节数组附加到bytesful字节数组。

2 个答案:

答案 0 :(得分:3)

可以通过多种具体方式完成此操作,但是使用LINQ可以使其变得简单:

Dim bytesful() As Byte = bytes.Concat(bytescrc).ToArray()

Concat通过连接两个IEnumerable(Of T)对象来创建单个IEnumerable(Of T),而ToArray从该单个列表中创建一个新数组。

答案 1 :(得分:3)

Array.CopyTo()方法添加到jmcilhinney提出的方法中,以防万一,请考虑对性能进行考量。
在所示的情况下,这无关紧要,但是如果元素的数量增加(以千为单位)并且操作进行迭代,结果可能会完全不同。

Dim bytesful((bytes.Length + bytescrc.Length) - 1) As Byte

bytes.CopyTo(bytesful, 0)
bytescrc.CopyTo(bytesful, bytes.Length)

Enumerable.Concat()的优点是更具可读性,您可以在一行中添加更多数组:

Dim bytesful() As Byte = bytes.Concat(bytescrc).Concat(SomethingElse).ToArray()