Datei hochladen
  1. base64hub
  2. Weitere Basen
  3. Base85 / Ascii85

Base85-/Ascii85-Encoder und -Decoder

Geben Sie Text ein, um Adobe-Ascii85 zu erhalten, die Base85-Variante von PDF und PostScript. Unter der Ausgabe können Sie die Begrenzer <~ ~> hinzufügen oder die Abkürzung z abschalten, oder Sie wechseln zu Git-Base85, Z85 oder RFC 1924.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload 4 Varianten Ascii85, Git/Python, Z85, RFC 1924 Aktualisiert 27.10.2026
Eingabe 0Bytes 0 BAusgabe 0

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So kodieren und dekodieren Sie Ascii85

  1. Geben Sie Text in Eingabe · Text ein oder fügen Sie ihn ein. Das Ascii85 erscheint in Ausgabe · Ascii85 (Adobe).
  2. Aktivieren Sie unter der Ausgabe Begrenzer <~ ~> hinzufügen für die PostScript-/PDF-Rahmung, und deaktivieren Sie z für Nullgruppen, wenn Ihr Decoder die Abkürzung nicht kennt.
  3. Für ein anderes Base85-Alphabet stellen Sie Nach auf Base85 (Git / Python b85), Z85 (ZeroMQ) oder RFC 1924 (IPv6 Base85).
  4. Zum Dekodieren klicken Sie im Richtungsschalter auf Ascii85 (Adobe) → Text. Der Decoder akzeptiert die Begrenzer <~ ~>, z, y und beliebigen Leerraum, umbrochene Daten aus einer Datei lassen sich also direkt einfügen.
  5. Bei binären Ergebnissen stellen Sie Nach auf Hex oder klicken auf Bytes speichern.

So funktioniert Ascii85

Ascii85 nimmt jeweils 4 Bytes, liest sie als eine 32-Bit-Zahl in Big-Endian und schreibt sie als 5 Ziffern zur Basis 85. Jede Ziffer ist ein Zeichen von ! (Wert 0) bis u (Wert 84). Fünf Zeichen für vier Bytes ergeben 25 % Overhead, gegenüber 33 % bei Base64.

Das klassische Beispiel ist Man (mit Leerzeichen am Ende): Die Bytes 4d 61 6e 20 werden zu 9jqo^. Ist die letzte Gruppe kürzer, füllt der Encoder sie mit Nullbytes auf und schreibt für n Bytes nur n + 1 Zeichen, so wird Hello (5 Bytes) zu 87cURDZ: fünf Zeichen für Hell und zwei für o.

Zwei Abkürzungen verkürzen häufige Muster. z ersetzt eine Gruppe aus vier Nullbytes, ausgeschrieben !!!!!. y ersetzt in der btoa-Variante vier Leerzeichen. Dieser Decoder liest beide, der Encoder schreibt z (abschaltbar), aber nie y.

Base85-Varianten im Vergleich

VarianteAlphabetHelloWo sie verwendet wird
Ascii85 (Adobe)! bis u in ASCII-Reihenfolge87cURDZPostScript, PDF /ASCII85Decode
Base85 (Git / Python)0-9 A-Z a-z !#$%&()*+-;<=>?@^_`{|}~NM&qnZvBinär-Patches in Git, Python base64.b85encode
Z850-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$#nm=QNzVSchlüssel in ZeroMQ und CurveZMQ, siehe Z85
RFC 1924Wie Git4)+k&C#VzJ4br>0wv%Yp für eine IPv6-AdresseIPv6-Adressen, als Scherz

Die Alphabete von Git und RFC 1924 sind identisch, aber RFC 1924 behandelt eine ganze 16-Byte-Adresse als eine 128-Bit-Zahl statt als vier 4-Byte-Gruppen. RFC 1924 erschien am 1. April 1996 und schlägt vor, 1080::8:800:200c:417a als 4)+k&C#VzJ4br>0wv%Yp zu schreiben. Der Konverter reproduziert das, wenn Von auf IPv6-Adresse und Nach auf RFC 1924 (IPv6 Base85) steht.

Ascii85 in PDF und PostScript

PostScript Level 2 führte Ascii85 ein, um Binärdaten wie Bilder und Schriften in eine Textdatei einzubetten. Die Daten werden als <~ … ~> gerahmt. In PDF enthält ein Stream mit /Filter /ASCII85Decode dieselbe Kodierung, abgeschlossen mit ~>. Der Decoder hier findet die Endmarkierung mit oder ohne das öffnende <~.

Ascii85 ist oft der äußere Filter einer Kette, zum Beispiel /Filter [/ASCII85Decode /FlateDecode]. Das Dekodieren des Ascii85 liefert dann zlib-komprimierte Bytes statt lesbarem Inhalt.

Git verwendet Base85 anders. In einem GIT binary patch beginnt jede Zeile mit einem Längenzeichen (A–Z für 1–26 Bytes, a–z für 27–52), gefolgt vom Base85 der zlib-komprimierten Daten. Entfernen Sie vor dem Dekodieren dieses erste Zeichen aus jeder Zeile und entpacken Sie dann das Ergebnis.

Ascii85 und Base85 in Python

Die Standardbibliothek kennt beide Alphabete:

import base64

base64.a85encode(b"Hello")                 # b'87cURDZ'
base64.a85encode(b"Hello", adobe=True)     # b'<~87cURDZ~>'
base64.a85encode(b"    ", foldspaces=True) # b'y'
base64.b85encode(b"Hello")                 # b'NM&qnZv'
base64.a85decode(b"<~9jqo^~>", adobe=True) # b'Man '

a85decode braucht adobe=True, um die Begrenzer zu akzeptieren. Weitere Rezepte zum Kodieren finden Sie auf der Python-Seite.

Häufige Probleme

  • "z" an Position … ist nur zwischen 5-Zeichen-Gruppen erlaubt. Ein z steht mitten in einer Gruppe. Die Daten sind beschädigt, oder es ist kein Ascii85; Z85 und Git-Base85 verwenden z als gewöhnliche Ziffer.
  • die Gruppe ab Position … liegt außerhalb des Wertebereichs. Fünf Zeichen kodieren einen Wert über 2^32 − 1. Das passiert, wenn Git-Base85 oder Z85 als Ascii85 dekodiert wird; stellen Sie Von um.
  • Unerwartetes Zeichen wie v, { oder |. Alles nach u außer den Abkürzungen y und z liegt außerhalb des Ascii85-Alphabets, ein weiteres Zeichen für eine andere Variante.
  • Die Ausgabe hat am Ende zusätzliche Nullbytes. Ihr Encoder hat die letzte Gruppe aufgefüllt und alle 5 Zeichen geschrieben. Ascii85 schreibt für eine letzte Gruppe aus n Bytes n + 1 Zeichen.

Häufige Fragen

Was ist der Unterschied zwischen Base85 und Ascii85?

Base85 ist die allgemeine Idee, 4 Bytes als 5 Zeichen aus einem Satz von 85 Zeichen zu schreiben. Ascii85 ist Adobes Version mit den Zeichen ! bis u, der Abkürzung z und den Begrenzern <~ ~>. Git, Pythons b85encode, Z85 und RFC 1924 rechnen genauso, nur mit anderen Alphabeten.

Was bedeutet z in Ascii85?

Ein einzelnes z steht für vier Nullbytes, die sonst als !!!!! geschrieben würden. Es ist nur dort erlaubt, wo eine vollständige Gruppe aus 5 Zeichen beginnen würde; ein z mitten in einer Gruppe ist ein Fehler.

Wie dekodiere ich Ascii85 aus einem PDF?

Kopieren Sie die Stream-Daten zwischen stream und endstream bis einschließlich ~> und fügen Sie sie mit der Richtung Ascii85 (Adobe) → Text ein. Steht beim Stream zusätzlich /FlateDecode, ist das Ergebnis zlib-Daten; stellen Sie Nach auf Base64 und entpacken Sie es mit dem gzip- und zlib-Decoder.

Ist Base85 besser als Base64?

Es ist etwa 6 % kürzer: 25 % Overhead gegenüber 33 %. Seine Alphabete enthalten aber je nach Variante Anführungszeichen, Backslashes oder < und &, sodass es in JSON, XML oder der Shell maskiert werden muss, wo Base64 das nicht braucht. Setzen Sie es dort ein, wo diese Zeichen unbedenklich sind.