Base85-Encoder/Decoder

Base85 komprimiert vier Bytes in fünf ASCII-Zeichen — dichter als das 3-zu-4-Verhältnis von Base64 — indem es ein 85-Zeichen-Alphabet anstelle von 64 verwendet. Adobes Ascii85-Variante ist in jeder PostScript- und PDF-Datei enthalten; die neuere Z85 (ZeroMQ) Variante vermeidet Zeichen, die in C-Strings und XML Probleme verursachen. Dieses Tool kodiert und dekodiert beide, mit optionalen Trennzeichen.

Wie man Base85 konvertiert

  1. 1

    Wählen Sie die Variante

    Ascii85 für PDF/PostScript-Ressourcen; Z85 für Quellcode und Netzwerkprotokolle.

  2. 2

    Text einfügen oder eine Datei hochladen

    Die Kodier-Richtung nimmt rohe Bytes; die Dekodier-Richtung nimmt einen Base85-String.

  3. 3

    Der Encoder chunked nach 4 Bytes

    Jeder 4-Byte-Block wird zu einem 5-Zeichen-Base85-String. Der letzte Block wird gepolstert und gekürzt.

  4. 4

    Kopieren Sie das Ergebnis

    Ascii85 optional umschlossen mit `<~` und `~>` Trennzeichen; Z85 ohne Trennzeichen.

Vergleich des Größen-Overheads

Kodierung Zeichen pro 4 Bytes Overhead vs. Binär
Hex 8 +100%
Base64 5.33 (auf 8 gerundet mit Padding) +37%
Base85 5 +25%
Rohbinär 4 0

So wird 1 MB Binär zu 1,25 MB in Base85, 1,33 MB in Base64, 2 MB in Hex.

Ascii85 vs Z85 Alphabete

Ascii85 (RFC 1924 / Adobe): Zeichen ! bis u (33-117 in ASCII), plus z als Abkürzung für 4 Null-Bytes. Verwendet in PostScript- und PDF-Streams, umschlossen als <~...~>.

Z85 (ZeroMQ): eine Teilmenge, die Anführungszeichen und Escape-Zeichen vermeidet:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#

Sicher in JSON, XML, C-Strings und Quellcode einzubetten, ohne Escaping.

Wie die Mathematik funktioniert

Jede 4 Bytes werden als ein Big-Endian 32-Bit-Integer N gelesen. Die 5 Ausgabewerte sind die Ziffern von N in Basis 85, die bedeutendste zuerst. 85^5 = 4 437 053 125, was größer ist als 2^32, sodass 4 Bytes immer in 5 Zeichen passen.

Wann Ascii85 wichtig ist

Öffnen Sie eine PDF in einem Texteditor und suchen Sie nach ASCII85Decode — Adobe verwendet es als Filter für eingebettete Bilder und Schriftarten, die einen 7-Bit-Transport überstehen müssen (alte Faxsysteme). Z85 wird häufig in ZeroMQ CURVE-Authentifizierungsschlüsseln verwendet.

Sonderfälle

  • All-zero 4-Byte-Block — Ascii85 kodiert es als das einzelne Zeichen z anstelle von !!!!!.
  • All-space 4-Byte-Block — Einige Varianten verwenden y für vier Leerzeichen, andere nicht.
  • Letzter Teilblock — Mit Null-Bytes gepolstert, und die entsprechende Anzahl von Ausgabewerten wird am Ende gekürzt.

Häufig gestellte Fragen

Kleinere Ausgabe, ja. Universell kompatibel, nein. Base85 enthält Zeichen wie <, >, &, " (in Ascii85), die in XML, JSON und URLs escaped werden müssen. Z85 vermeidet dies, aber die meisten Tools sprechen nativ Base64.

Ascii85, wenn Sie mit PostScript- oder PDF-Dateien arbeiten. Z85 für Quellcode, Konfigurationsdateien und Netzwerkprotokolle. RFC 1924 IPv6-Kodierung ist eine andere Zuordnung der gleichen 85 Zeichen und wird in der Praxis selten verwendet.

Nein. Sie verwenden unterschiedliche Alphabete. Das Dekodieren von Ascii85 mit einer Z85-Tabelle produziert Müll. Wählen Sie eines vor dem Kodieren und bleiben Sie dabei.

Für Adobe Ascii85 in PDF- oder PostScript-Streams, ja — sie markieren den kodierten Bereich. Für die eigenständige Verwendung und alle Z85-Ausgaben sind keine Trennzeichen erforderlich.

Verwandte Tools