> zeromq | source-safe | effizient <
// Z85 – ZeroMQs Base85-Variante, sicher für Quellcode und JSON
Quellcode-freundlich
Verwendet keine Anführungszeichen, Backslashes oder Leerzeichen – ideal für C/C++-Strings, JSON und Konfigurationsdateien.
Hohe Dichte
Nur etwa 25 % Overhead – effizienter als Base64 mit ca. 33 % Overhead bei textueller Darstellung.
ZeroMQ-Standard
Offizielles Encoding in ZeroMQ, wenn Binärdaten in textbasierte Protokolle eingebettet werden.
>> technische details
Wie Z85 funktioniert:
Z85 encodiert 4 Bytes in 5 Zeichen mithilfe von 85 druckbaren ASCII-Zeichen. Das Alphabet ist so gewählt, dass keine Zeichen verwendet werden, die in C/C++-Strings oder JSON geescaped werden müssen, wodurch Einbettung in Quellcode einfacher wird.
Beispiel:
"Hello" → nm=QNz.92
Warum Z85 verwenden:
- >Binärdaten direkt im Quellcode oder in Config-Dateien einbetten
- >Keine zusätzlichen Escape-Sequenzen in JSON, XML oder YAML
- >Bessere Platzausnutzung als Base64 bei textueller Darstellung
- >Kompatibel mit ZeroMQ-Ökosystem und -Bibliotheken
- >Standardisierte Darstellung von Binärpayloads in textbasierten APIs
>> häufige fragen
Was ist Z85-Encoding?
Z85 ist die Base85-Variante von ZeroMQ und verwendet 85 druckbare ASCII-Zeichen, die speziell dafür ausgewählt wurden, sicher in Quellcode eingebettet werden zu können, ohne geescaped werden zu müssen.
Worin unterscheidet sich Z85 von „normalem“ Base85?
Z85 nutzt ein anderes Alphabet, das problematische Zeichen wie Anführungszeichen, Backslashes und Leerzeichen vermeidet, sodass Strings in C/C++ oder JSON unverändert bleiben.
Wann sollte ich Z85 einsetzen?
Wenn Sie Binärdaten in Quellcode, Konfigurationsdateien oder textbasierte Protokolle einbetten möchten und Escape-Sequenzen vermeiden wollen – insbesondere im Umfeld von ZeroMQ.
Welche Längenbeschränkungen gelten für Z85?
Die Länge der Binärdaten muss ein Vielfaches von 4 Bytes sein. Encoder können bei Bedarf auffüllen, Decoder erwarten jedoch diese Eigenschaft, um den ursprünglichen Datenstrom korrekt zu rekonstruieren.