【问题标题】:Convert Long HEX String To HEX bytes array using VB.NET 2015使用 VB.NET 2015 将长 HEX 字符串转换为 HEX 字节数组
【发布时间】:2018-08-19 06:15:46
【问题描述】:

如何使用 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

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您快到了,但有两件事您需要更正。首先,您删除了字符串中的空格,这使得分隔每个数字变得更加困难:

    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
    

    【讨论】:

    • 它说找不到任何可识别的数字。 retVal(idx) = Convert.ToByte(byteString, 16) 行
    • @sajiindra:您的输入文本似乎在每个数字前面都缺少&H,并且只使用了H。在您的其他代码中添加&,或将其添加到您当前的方法中:input = input.Replace("H", "")
    • @sajiindra : 如果它有效,请不要忘记按 勾选/复选标记 将我的答案标记为 已接受我的帖子的左边。更多信息请参考:How does accepting an answer work?谢谢!
    • @sajiindra :这是一个完全不同的问题,我看不出这与您的第一个问题有什么关系。如果您还有其他问题,请改为提出新问题。
    • 提取一定数量的字符,用String.Substring()即可。
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 2016-08-28
    • 1970-01-01
    • 2011-12-05
    • 2016-06-04
    • 2013-04-01
    • 2020-11-13
    • 2012-11-01
    相关资源
    最近更新 更多