如何将十六进制值转换回字符?

时间:2015-01-20 14:33:39

标签: vb.net

我需要做的就是将十六进制中的两个字符翻译成文本。这是一个简单的解释,您可以通过查看我的代码了解更多。有人知道怎么做这一行代码吗?

 Function IndexDecode() As String
        Dim sText As String = "68656c6c6f"
        Dim sDecode As String = ""
        Dim iLength As Integer
        Dim iRemainingLength As Integer = 0
        Dim sAnswer As String = ""
        iLength = Len(sText)

        Do Until iLength = 0
            sDecode = Left(sText, 2)
            'Need code to change the 2 characters into one letter
            sDecode = sDecode + ???
            sAnswer &= sDecode
            iRemainingLength = iLength - 2
            sText = sText.Substring(3, iRemainingLength)
            iLength = Len(sText)
        Loop
        Return sDecode
    End Function

2 个答案:

答案 0 :(得分:1)

尝试

chr(val("&H" + sDecode))

val()函数返回一个字符串代表的数字,& H前缀告诉它数字是十六进制。

答案 1 :(得分:1)

上面的代码存在一些问题。

首先你应该返回变量sAnswer,而不是瞬态sDecode。

第二,您可以在不使用许多临时变量的情况下简化您的循环

第三提取子字符串的索引应该从零开始,因此从输入字符串中删除两个字节应该使用索引2

最后你可以使用转换为整数16来构建一个char数组,然后使用该char数组创建一个用于构建最终字符串的新字符串

Function IndexDecode() As String
    Dim sText As String = "68656c6c6f"
    Dim sDecode As String = ""
    Dim sAnswer As String = ""

    Do while sText.Length > 0
        sDecode = Left(sText, 2)
        Dim cvt() = new Char() {ChrW(Convert.ToInt32(sDecode, 16))}
        sDecode = new string(cvt)
        sAnswer &= sDecode
        sText = sText.Substring(2)
    Loop
    Return sAnswer
End Function