在Excel中将十六进制转换为base64

时间:2019-04-16 10:01:02

标签: excel vba base64 hex

我知道已经有一个同名Convert a hex string to base64 in an excel function的主题,但是我没有收到与该线程中提供的VBA相同的结果。我正在使用此网站,它提供了正确的答案https://cryptii.com/pipes/base64-to-hex

Hex2Base64提供的结果似乎有12个不必要的字符。如何使其像网站一样工作?

我知道有一种简单的解决方案,可以将诸如=LEFT(cell;20)的内容输入到另一个单元格中,但是如何用当前的VBA进行制作呢?

所以我有

十六进制:01 00 00 00 05 00 00 00 00 E3 07 04 00 0F 00

在网站上我收到BASE64:AQAAAAUAAAAA4wcEAA8A

enter image description here

通过提供的解决方案,在已经存在的线程中,我收到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

1 个答案:

答案 0 :(得分:2)

问题在于输入参数-带空格的十六进制字符串。删除空格可获得预期结果:

Debug.Print Hex2Base64(Replace("01 00 00 00 05 00 00 00 00 E3 07 04 00 0F 00", " ",""))