使用 VB.Net 将两个字节数组附加到一个字节数组

Posted

技术标签:

【中文标题】使用 VB.Net 将两个字节数组附加到一个字节数组【英文标题】:Append two byte arrays to one byte array using VB.Net 【发布时间】:2018-08-22 01:27:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

有很多具体的方法可以做到这一点,但是一点 LINQ 可以很容易地做到这一点:

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

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

【讨论】:

【参考方案2】:

将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()

【讨论】:

以上是关于使用 VB.Net 将两个字节数组附加到一个字节数组的主要内容,如果未能解决你的问题,请参考以下文章

vb.net中的C ++ DLL Wrapper传递字节数组的字节数组?

如何将字节数组附加到Go中的字节片[重复]

比较两个字节数组的最快方法是啥?

如何将字节数组转换为位图实例 (.NET)?

如何在golang中将字节附加到字节数组?不是字节数组到字节数组切片等[重复]

如何在golang中将切片附加到字节数组