Base85エンコード・デコード
テキストや16進数のバイト列をBase85にエンコードし、デコードして戻します。PDFやPostScriptのAscii85、PythonやGitが使うRFC 1924のアルファベット、ZeroMQのZ85に対応。
Base85は、4バイトを印字可能な5文字で表すため、エンコード後のデータは25%しか増えず、Base64の33%より小さくなります。このツールは、テキストや生の16進数のバイト列をエンコードし、デコードして戻します。よく出会う3種類のアルファベットに対応しています。PDFやPostScriptのストリームで使うAscii85、Pythonの base64.b85encode やGitのバイナリパッチが使うRFC 1924のアルファベット、ZeroMQのZ85です。
使い方
- エンコードかデコードかを選びます。
- 作業中のシステムが使っている方式を選びます。
- エンコードするテキストや16進数のバイト列、またはデコードするBase85の文字を貼り付けます。
- Ascii85では、必要に応じて <~ ~> の区切りや行の長さを追加します。
計算式
N = b₁×256³ + b₂×256² + b₃×256 + b₄ = c₁×85⁴ + c₂×85³ + c₃×85² + c₄×85 + c₅
4バイトのグループごとに、ビッグエンディアンの32ビットの数Nとして読み取り、5つの85進数の桁c₁〜c₅に書き直して文字に対応させます。Ascii85は各桁に33を足し("!" が0、"u" が84)、0のバイト4つは "z" 1文字で書きます。最後にnバイト(n < 4)が余った場合は0で埋めてエンコードし、n + 1文字に切り詰めます。デコード時は最大の桁で埋めて、余分なバイトを捨てます。Z85には端数のグループがないため、入力は4バイトのブロックで割り切れる必要があります。
計算例
テキスト "Man " はバイト 4D 61 6E 20 なので、N = 1,298,230,816 です。85のべき乗で割ると、桁は24、73、80、78、61になり、33を足すと文字は 9、j、q、o、^ になります。したがってAscii85は "Man " を 9jqo^(区切りを付けると <~9jqo^~>)にエンコードします。"Hello, World!" は13バイト(完全なグループ3つと1バイト)で、17文字の 87cURD_*#4DfTZ)+T にエンコードされます。
よくある質問
どのBase85方式が必要ですか?
PDFとPostScript(ASCII85Decodeフィルター)、Pythonの a85encode にはAscii85を使います。Pythonの b85encode、Mercurial、Gitのバイナリdiffには、RFC 1924のアルファベットを使います。ZeroMQの鍵や、ソースコードに埋め込む文字列にはZ85を使います。このアルファベットには引用符やバックスラッシュがないためです。デコードは必ず同じ方式で行ってください。
Base85は暗号化ですか?
いいえ。鍵のない元に戻せるエンコードなので、誰でもデコードできます。テキストしか通さない経路でバイナリデータを運ぶためのものです。
一部のZ85ライブラリでデータが拒否されるのはなぜですか?
ZeroMQ RFC 32では、バイト数が4で割り切れ、エンコード後の長さが5で割り切れることが求められます。このツールは端数のZ85グループを拒否します。パディングが必要な場合は、周囲のプロトコルで定義して取り除く必要があります。
デコード結果が16進数でしか表示されないのはなぜですか?
圧縮されたストリームや鍵のように、有効なUTF-8ではないバイト列はテキストとして表示できないため、16進数だけが意味を持ちます。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/base85-encoder/
このツールを引用する
kakaoCalc. (2026, November 8). Base85エンコード・デコード. https://kakao.mobile/ja/tools/base85-encoder/
“Base85エンコード・デコード.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/base85-encoder/.