Anleitung
- Wählen Sie „Kodieren“, um Text oder Bytes in Base85 umzuwandeln, oder „Dekodieren“, um Base85 wieder in Daten zurückzuverwandeln.
- Geben Sie Ihre Eingabe ein, fügen Sie sie ein oder klicken Sie auf „Datei öffnen“. Stellen Sie die Eingabe auf Hex um, wenn Sie mit Rohbytes arbeiten.
- Das Ergebnis wird während der Eingabe aktualisiert. Wählen Sie beim Dekodieren je nach Inhalt der Daten die Ausgabe als Text oder Hex.
- Kopieren Sie das Ergebnis oder laden Sie es als Datei herunter.
Was ist Base85?
Base85 ist eine Familie von Kodierungen, die jeweils 4 Bytes in 5 Zeichen umwandeln. Fünf Ziffern zur Basis 85 können 85 × 85 × 85 × 85 × 85 = 4.437.053.125 Werte darstellen, gerade genug für jede 32-Bit-Zahl. Die Ausgabe ist daher nur 25 % größer als die Eingabe, verglichen mit 33 % bei Base64.
Es gibt mehrere Base85-Alphabete, die nicht untereinander austauschbar sind: Ascii85 (Adobe, PDF), Z85 (ZeroMQ) und das Alphabet auf dieser Seite. Es verwendet 0-9, A-Z, a-z und 23 Symbole: !#$%&()*+-;<=>?@^_`{|}~. Anführungszeichen, Komma, Punkt, Schrägstrich, Doppelpunkt, Backslash und eckige Klammern sind nicht enthalten.
RFC 1924, Git und Python
Der Zeichensatz stammt aus RFC 1924, „A Compact Representation of IPv6 Addresses“, das am 1. April 1996 als Aprilscherz veröffentlicht wurde. Darin wurde vorgeschlagen, eine 128-Bit-IPv6-Adresse als eine einzige Zahl zur Basis 85 mit genau 20 Zeichen zu schreiben. Niemand schreibt IPv6-Adressen auf diese Weise, doch das Alphabet wurde später für allgemeine Binärdaten wiederverwendet:
- Git speichert Binärdateien in Patches (
git diff --binary,git format-patch) als zlib-komprimierte Daten, die mit diesem Alphabet kodiert sind, mit einem Längenzeichen am Anfang jeder Zeile. - Python bietet ab Version 3.4
base64.b85encode()undb85decode(), deren Ausgabe mit diesem Tool übereinstimmt. - Mercurial verwendet dieselbe Kodierung für Binärdateien in Diffs im Git-Stil.
Beachten Sie, dass RFC 1924 die gesamte 128-Bit-Adresse auf einmal umwandelt, während Git, Python und dieses Tool in Gruppen von 4 Bytes arbeiten. Ein 16-Byte-Wert ergibt daher ein anderes Ergebnis als mit dem Verfahren aus dem RFC.
Verkürzte letzte Gruppen
Ist die Eingabelänge kein Vielfaches von 4, wird die letzte Gruppe mit Nullbytes aufgefüllt und kodiert, und nur die ersten n + 1 Zeichen werden behalten: 1 Byte ergibt 2 Zeichen, 2 Bytes ergeben 3 und 3 Bytes ergeben 4. Der Decoder kehrt diesen Vorgang um, sodass keine Füllzeichen nötig sind. Anders als das z von Ascii85 kennt diese Variante keine Abkürzung für Nullbytes.
# Python 3.4+
import base64
base64.b85encode(b'hello') # b'Xk~0{Zv'
base64.b85decode(b'Xk~0{Zv') # b'hello'
Spezifikation
| Alphabet | 0-9 A-Z a-z !#$%&()*+-;<=>?@^_`{|}~ |
|---|---|
| Ausgabegröße | 5 Zeichen pro 4 Bytes (125 %) |
| Auffüllung | Keine |
| Standard | Zeichensatz nach RFC 1924 (Git, Python b85) |
| Groß-/Kleinschreibung relevant | Ja |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | NM&qnZ!92JZ*pv8Ap |
Base64.is | LSb`dHZ(42a{ |
你好 | <h`KfrM& |
Häufig gestellte Fragen
Ist Base85 dasselbe wie Ascii85?
z ab und kann von Adobe-Begrenzern umschlossen sein. Für PDF- und PostScript-Daten verwenden Sie die Seite Ascii85.War RFC 1924 ein echter Standard?
Nein. Es ist ein RFC der Kategorie „Informational“, der als Aprilscherz veröffentlicht und nie für IPv6-Adressen verwendet wurde. Sein Zeichensatz wurde erst später durch Git und Python populär.
Wie viel größer ist die Base85-Ausgabe?
Kann ich Base85 in JSON oder XML verwenden?
<, > und & maskiert werden. Base85 ist nicht URL-sicher.