0

Dekodiert

Ascii85

Kodiert

Ascii85
Variante

Über Ascii85

Ascii85 ist eine Kodierung, die 7-Bit druckbare ASCII-Zeichen verwendet. Es wird auch Base85 genannt.

Bei Ascii85 werden Daten in 4-Byte-Blöcke geteilt und in 5 ASCII-Zeichen umgewandelt.

Es gibt verschiedene Varianten von Ascii85. DenCode unterstützt die folgenden drei Typen. Das Original war btoa, gefolgt von Adobe und Z85.

Übersicht
Z85Verwendet von ZeroMQ. Es vermeidet Zeichen, die maskiert werden müssen, wie „\“ (Backslash) oder „'“ (Apostroph).
AdobeVerwendet in Adobes PostScript und PDF (Portable Document Format). Es wird von „<~“ und „~>“ umschlossen.
btoaFormat des UNIX-Befehls btoa. Wurde früher für den Austausch von Binärdaten verwendet, ist heute aber nicht mehr üblich. Wird von „xbtoa Begin“ und „xbtoa End“ umschlossen.

Die verwendeten ASCII-Zeichen sind wie folgt. Ein 4-Byte-Wert wird als vorzeichenlose Big-Endian-Ganzzahl behandelt, in 5 Stellen zur Basis 85 umgerechnet und dann anhand der folgenden Tabelle in ASCII-Zeichen umgewandelt.

ASCII-Zeichen
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(Ursprünglich Zeichen von „ “ (Leerzeichen) bis „t“, wurde aber später ersetzt durch „!“ bis „u“, da einige Mail-Programme Leerzeichen am Zeilenende entfernten.)

Beispiel für die Konvertierung von „Hello“ in Ascii85:

1. In 4-Byte-Blöcke teilen. Wenn weniger als 4 Bytes, mit „00“ auffüllen.

48656C6C(16) 6F000000(16)  (Hell o)

2. Als 4-Byte Big-Endian Integer interpretieren und in Basis-85 (5 Stellen) umwandeln.

48656C6C(16)
= 1214606444(10)
= 23 * 854 + 22 * 853 + 66 * 852 + 52 * 85 + 49
6F000000(16)
= 1862270976(10)
= 35 * 854 + 57 * 853 + 33 * 852 + 65 * 85 + 26

3. Jede Basis-85-Ziffer in ein ASCII-Zeichen umwandeln. Wenn gepaddet wurde, wird das Padding bei Adobe/Z85 entfernt.

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Zeichen verbinden. Adobe fügt „<~“ und „~>“ hinzu und bricht zeilenweise um. btoa fügt Header/Footer hinzu.

Ergebnis
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Es gibt einige definierte Kurzformen:

Kurzform
Z85Keine
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (ab btoa v4.2)