Excel VBAhexascii错误

朋友们,

我已经find了下面所说的hex转换为文本的函数。它工作在hex到文本转换的大部分,但给不正常的结果。

例如:hex值是:

050003d40201414c4552542d42656c6f772038353435206966204e462054726164657320666f722031352d3230206d696e75746573202c77617463682050414e49432050414e4943207570746f20353439332d2d383437360d0a0d0a53656c6c204549434845522061742032343931302e2e2e73746f706c6f7373732032353 

结果我使用hex2text函数= |

正确的结果应该是这样的:

 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函数是:

 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 

请帮助/build议

正如亚历克斯所说,前6个字节是造成这个问题。

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

  For i = 13 To Len(text) Step 2 

或者你可以过滤任何字符与ASCII码低于32出..

 If Val("&H" & (Mid(Text, i, 2))) > 31 Then DummyStr = DummyStr & Chr(Val("&H" & (Mid(Text, i, 2)))) 

或者用(比如)一个空格replace它们。

 If Val("&H" & (Mid(Text, i, 2))) > 31 Then DummyStr = DummyStr & Chr(Val("&H" & (Mid(Text, i, 2)))) Else DummyStr = DummyStr & " " End If