【问题标题】:VBA Excel ascii to hexVBA Excel ascii转十六进制
【发布时间】: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 换行),因此您将从复制粘贴到该网页的字符串的任何位置拾取行尾标记.

标签: excel vba hex ascii


【解决方案1】:

Worksheets("List1").Range("A6").NumberFormat = "@" & tmp 工作正常,谢谢 Scott Craner

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 2020-11-20
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2015-05-22
    • 2017-08-28
    相关资源
    最近更新 更多