> zeromq | source-safe | efficient <

// Z85 - ZeroMQ の Base85 変種。ソースコードや JSON に安全に埋め込めるテキスト表現

[SOURCE-SAFE]

ソースコードに優しい

ダブルクォート、バックスラッシュ、空白などの問題になりやすい文字を含まないため、C/C++ の文字列リテラルや JSON にそのまま貼り付けできます。

[EFFICIENT]

高い情報密度

4 バイトを 5 文字に変換し、Base64(約 33% のオーバーヘッド)よりも小さなオーバーヘッド(約 25%)でバイナリをテキスト化します。

[ZEROMQ]

ZeroMQ 標準

ZeroMQ がテキストベースのプロトコルでバイナリを扱う際に採用している公式エンコード方式です。

>> 技術情報

Z85 の仕組み:

Z85 は 4 バイトのブロックを 5 文字のテキストに変換します。85 個の印字可能 ASCII 文字から構成されるアルファベットが使われており、その選定によって多くの言語でエスケープ不要な文字列になります。

例:

"Hello" → nm=QNz.92

Z85 を使う理由:

  • >バイナリデータをソースコードや設定ファイル内に直接埋め込みたい場合
  • >JSON や YAML / TOML のフィールドにバイナリを載せつつ、エスケープを最小限に抑えたい場合
  • >Base64 よりコンパクトなテキスト表現を求める場合
  • >ZeroMQ ベースのメッセージングやプロトコルと自然に連携したい場合
  • >テキストベース API でペイロードのフォーマットを統一したい場合

>> よくある質問

Z85 とは何ですか?

Z85 は ZeroMQ が定義した Base85 エンコード方式で、85 種類の印字可能 ASCII 文字のみを使い、ソースコード内や JSON でエスケープなしに扱えるよう設計されています。

Z85 と通常の Base85 の違いは?

他の Base85 と異なり、Z85 では引用符やバックスラッシュ、空白など多くの言語でエスケープが必要になる文字をアルファベットから除外しています。

どんな場面で Z85 を使うべきですか?

ライブラリのサンプルコード、設定ファイル、テキストベースの RPC プロトコルなどにバイナリを埋め込みたいときに特に便利です。

Z85 には長さの制約がありますか?

Z85 では元のバイナリ長が 4 バイトの倍数である必要があります。エンコーダー側でパディングを行うことは可能ですが、デコード時にはこの制約を意識して扱う必要があります。

その他の言語