我知道已存在同名Convert a hex string to base64 in an excel function的主题但是我没有收到与线程中提供的VBA所期望的相同的结果。我正在使用这个网站,它提供了正确答案https://cryptii.com/pipes/base64-to-hex
看起来Hex2Base64提供的结果中有12个不必要的字符。如何让它像网站一样工作?
我知道有一个简单的解决方案输入到另一个单元格,如:=LEFT(cell;20)
,但如何使用当前的VBA?
所以我有:
HEX:01 00 00 00 05 00 00 00 00 E3 07 04 00 0F 00
在网站上我收到了BASE64:AQAAAAUAAAAA4wcEAA8A
通过提供的解决方案,在现有的线程中,我收到BASE64:AQAAAAUAAAAA4wcEAA8AAAAAAAAAAA==
Function Hex2Base64(byVal strHex)
Dim arrBytes
If Len(strHex) Mod 2 <> 0 Then
strHex = Left(strHex, Len(strHex) - 1) & "0" & Right(strHex, 1)
End If
With CreateObject("Microsoft.XMLDOM").createElement("objNode")
.DataType = "bin.hex"
.Text = strHex
arrBytes = .nodeTypedValue
End With
With CreateObject("Microsoft.XMLDOM").createElement("objNode")
.DataType = "bin.base64"
.nodeTypedValue = arrBytes
Hex2Base64 = .Text
End With
End Function
问题在于输入参数 - 带空格的十六进制字符串。删除空格可获得预期结果:
Debug.Print Hex2Base64(Replace("01 00 00 00 05 00 00 00 00 E3 07 04 00 0F 00", " ",""))