首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel VBA中从十六进制到ascii转换错误

Excel VBA中从十六进制到ascii转换错误
EN

Stack Overflow用户
提问于 2017-01-23 14:57:22
回答 1查看 2.7K关注 0票数 1

我已经发现了以下所述的函数,用于将十六进制转换为text.It,虽然大部分十六进制转换为文本转换,但给出了异常结果。

例如,的十六进制值是:

代码语言:javascript
运行
复制
050003d40201414c4552542d42656c6f772038353435206966204e462054726164657320666f722031352d3230206d696e75746573202c77617463682050414e49432050414e4943207570746f20353439332d2d383437360d0a0d0a53656c6c204549434845522061742032343931302e2e2e73746f706c6f7373732032353

结果我继续使用hex2text函数=\

正确的结果应该是:

代码语言:javascript
运行
复制
ALERT-Below 8545 if NF Trades for 15-20 minutes ,watch PANIC PANIC upto 5493--8476........

(注:我使用hex2ascii转换网站http://www.rapidtables.com/convert/number/hex-to-ascii.htm来获得正确的结果)

我的Hex2text函数是:

代码语言:javascript
运行
复制
Public Function HexToText(text As Range) As String
    Dim i As Integer
    Dim DummyStr As String

    For i = 1 To Len(text) Step 2
       DummyStr = DummyStr & Chr(Val("&H" & (Mid(text, i, 2))))
       DoEvents
    Next i

    HexToText = DummyStr
End Function
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 15:21:45

正如Alex所指出的,前6个字节导致了这个问题。

您可以通过更改ForNext循环从第13个字符开始:

代码语言:javascript
运行
复制
 For i = 13 To Len(text) Step 2

或者你可以过滤ASCII代码低于32的任何字符。

代码语言:javascript
运行
复制
If Val("&H" & (Mid(Text, i, 2))) > 31 Then DummyStr = DummyStr & Chr(Val("&H" & (Mid(Text, i, 2))))

或者用(例如)空格替换它们。

代码语言:javascript
运行
复制
If Val("&H" & (Mid(Text, i, 2))) > 31 Then 
   DummyStr = DummyStr & Chr(Val("&H" & (Mid(Text, i, 2))))
Else
   DummyStr = DummyStr & " "
End If
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41809267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档