Ich habe folgendes Problem:Base64 kodieren Bytes in VBA
Ich habe ein Byte-represantation eines Wertes, und ich möchte Base64-Encode dieses Byte-Wert wie in der Abbildung unten.
Hier ist der Code, den ich ausprobiert habe. Es funktioniert, aber ich habe die erwartete Ausgabe nicht erhalten. Die Ausgabe von der Funktion lautet: AAB/AQatAQIBAA ==
Aber ich erwarte: AAECAa0GAX8AAA ==
Wie kann ich das in VBA zu tun oder ist das überhaupt möglich?
Private Function encodeBase64(ByRef arrData() As Byte) As String
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
encodeBase64 = objNode.text
Set objNode = Nothing
Set objXML = Nothing
End Function
Function bin2Byte(ByVal s As String) As Byte()
Dim bitsIn As Long
bitsIn = 8
Dim i As Long
'pad with zeros
If Len(s) Mod bitsIn <> 0 Then
For i = 1 To bitsIn - Len(s) Mod bitsIn
s = "0" & s
Next i
End If
i = Len(s)
Dim bytes() As Byte
Dim byteCount As Long
byteCount = -1
Dim sByte As String
Do While LenB(s) > 0
byteCount = byteCount + 1
ReDim Preserve bytes(byteCount)
sByte = Mid$(s, Len(s) - bitsIn + 1)
'sByte = Mid$(s, 1, bitsIn)
For i = 0 To 7 Step 1
bytes(byteCount) = bytes(byteCount) + CLng(Mid$(sByte, 8 - i, 1)) * 2^i
Next i
s = Mid$(s, 1, Len(s) - bitsIn)
's = Mid$(s, bitsIn + 1)
Loop
bin2Byte = bytes
End Function
Sub tester()
'note we can't add any 0 padding to the test binary string
Dim bin As String
bin = "00000000000000010000001000000001101011010000011000000001011111110000000000000000"
Dim binOut As String
binOut = encodeBase64(bin2Byte(bin))
Debug.Print (binOut)
End Sub
ich buchstäblich gegoogelt „Base64 kodieren Bytes in VBA“ und eine Unmenge Treffer bekam! – Absinthe
Ich habe es auch versucht, aber nichts davon hat geholfen oder mir geholfen –
@MaThias Kannst du Code schreiben, hast du es schon versucht? – AntiDrondert