2 Stimmen

Konvertierung einer BASE64-Zeichenfolge in eine BASE16(HEX)-Zeichenfolge?

Hey, ich versuche, ein Programm zu schreiben, um von einem BASE64-String in einen BASE16(HEX)-String zu konvertieren.

Hier ist ein Beispiel:

     BASE64:   Ba7+Kj3N
HEXADECIMAL:   05 ae fe 2a 3d cd
     BINARY:   00000101 10101110 11111110 00101010 00111101 11001101
    DECIMAL:   5 174 254 42 61 205

Wie funktioniert die Konvertierung von BASE64 nach HEXIDECIMAL?
Warum ist die Dezimaldarstellung aufgeteilt?
Wie kommt es, dass die binäre Darstellung in 6 Abschnitte unterteilt ist?

Ich möchte nur die Mathematik, den Code, den ich handhaben kann, nur dieser Prozess ist verwirrend mich. Danke :)

4voto

Josh Lee Punkte 159535

Lesen Sie die base64 4 Zeichen auf einmal, da 4 base64-Zeichen 3 Bytes ergeben:

'Ba7+', 'Kj3N'

Dekodieren Sie jedes Zeichen der base64-Datei. Ich habe es gerade nachgeschlagen unter Wikipedia :

[1, 26, 59, 62], [10, 35, 55, 13]

Verschieben Sie die Zahlen in jeder Gruppe um 18, 12, 6 bzw. 0 nach links:

>>> def pack(a, b, c, d): return hex((a << 18) + (b << 12) + (c << 6) + d)
>>> pack(1, 26, 59, 62)
'0x5aefe'
>>> pack(10, 35, 55, 13)
'0x2a3dcd'

Wenn Sie dann selbst in Hexadezimalzahlen umrechnen wollen, verschieben Sie sie um 4, 8, ... nach rechts. 24, 28 nach rechts, um jedes Nybble abzuschälen und in eine Ziffer von 0 bis f umzuwandeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X