vb.net - 使用 VB.NET 2015 将长 HEX 字符串转换为 HEX 字节数组
问题描述
如何使用 VB.Net 将 Long HEX String 值转换为 HEX 字节数组。考虑如果我有01 H3 HB HD3 H0 HA H36 H10
很长的十六进制字符串,我想将其转换为&H1, &H3, &HB, &HD3, &H0, &HA, &H36, &H10
.
然后我可以Dim bytes1() As Byte =
到十六进制字节数组。
我尝试了以下代码,但它不起作用。
Private Function HexStringToBytes(ByVal input As String) As Byte()
input = input.Trim().ToUpper()
input = input.Replace("&H", "")
input = input.Replace(" ", "")
Dim byteStrings() As String = input.Split(New Char() {","c})
If (byteStrings.Length > 0) Then
Dim retVal() As Byte = CType(Array.CreateInstance(GetType(Byte), byteStrings.Length), Byte())
Dim idx As Integer = 0
For Each byteString As String In byteStrings
retVal(idx) = Convert.ToByte(byteString, 16)
idx += 1
Next
Return retVal
End If
Return New Byte() {}
End Function
解决方案
你快到了,但有两件事你需要纠正。首先,您删除字符串中的空格,从而更难分隔每个数字:
input = input.Replace(" ", "")
其次,您用逗号( ,
) 分隔,但您的字符串没有任何逗号,因此它实际上并没有做任何事情:
Dim byteStrings() As String = input.Split(New Char() {","c})
解决方案非常简单:删除该input = input.Replace(" ", "")
行并用空格分隔:
Dim byteStrings() As String = input.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
StringSplitOptions.RemoveEmptyEntries
确保数组中没有空字符串。
最后,作为建议,您可以替换:
Dim retVal() As Byte = CType(Array.CreateInstance(GetType(Byte), byteStrings.Length), Byte())
与:
Dim retVal() As Byte = New Byte(byteStrings.Length - 1) {}
或者:
Dim retVal(byteStrings.Length - 1) As Byte
推荐阅读
- c - 将键盘中的单词读入 C 2D 数组
- excel - 重新计算VBA公式excel
- discord - 无法读取未定义 discord.js 的属性“数据”
- java - org.openqa.selenium.WebDriverException:返回值无法转换为 WebElement
- python - 更改文件扩展名和跟踪更改
- php - 选择一个选项的递归选择php codeigniter
- c# - 阅读过程信息。Win32Exception ERROR_PARTIAL_COPY
- ios - 使用 UIActivityViewController/UIDocumentInteractionController 的文件共享不起作用 - [无法通过 AirDrop、Whatapp、iMessage、Mail 等共享]
- android - 无法为 ExoPlayer 构建 ffmpeg
- smartsheet-api - 向父行添加新子行时出现问题;新行总是添加到工作表底部