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