我想使用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
字节数组。
答案 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()