【发布时间】:2018-09-04 18:16:16
【问题描述】:
我在使用 VBA 将 ascii 转换为十六进制时遇到问题。我需要将一个字符串转换为十六进制,它将字母和数字组合在一起。 但是我的代码只转换了大约一半的字符串。
我在 A1 中有以下 Sting:BFEBFBFF000406E3
我填写A6的代码:42464542464246400000000000000000
我正在使用http://www.convertstring.com/cs/EncodeDecode/HexDecode 来检查它是否正常,并在那里翻译为:42464542464246463030303430364533DA
请问我有什么问题?
Sub strg()
Dim strg As String
Dim tmp As String
strg = Worksheets("List1").Range("A1")
Worksheets("List1").Range("A5").Value = strg
tmp = ""
For I = 1 To Len(strg)
tmp = tmp & hex((Asc(Mid(strg, I, 1))))
Next
Worksheets("List1").Range("A6").Value = tmp
End Sub
感谢您的帮助。
【问题讨论】:
-
不应该
For Next loop有一个step 2以便一次读取 2 个字符吗? -
看起来字符串被转换为 Double 将数字截断为 15 位。在前面加个引号:
.Value = Chr(39) & tmp -
或将
Worksheets("List1").Range("A6").NumberFormat = "@"放在将tmp分配给单元格之前。 -
我认为您指的是
HexEncode页面。当我运行它时,结果不包括最后的DA。而且,由于tmp包含正确的结果,因此将结果作为text写入单元格的上述两个选项中的任何一个都应该有效。 -
十六进制的 DA 为 13(ASCII 回车)和 10(ASCII 换行),因此您将从复制粘贴到该网页的字符串的任何位置拾取行尾标记.