UTILS.
100% ブラウザ内で完結
🔠

Ascii85 / Base85 エンコード&デコード

標準および Adobe(<~ ~>)バリアントに対応し、バイト列を Ascii85/Base85 にエンコード、また元に戻すデコードをブラウザ内だけで実行します。

— ここに結果が表示されます —

このツールについて

Ascii85 / Base85 ツールは、バイナリデータを Ascii85(Base85 とも呼ばれます)との間で相互変換します。Ascii85 は 4 バイトを 5 個の印字可能文字にまとめるテキストエンコードで、Base64 より約 25% コンパクトです。PostScript や PDF のストリーム内(Adobe バリアント)や、パッチ/diff 形式で使われます。すべては TextEncoder/TextDecoder を用いてブラウザ内でローカルに実行され、貼り付けた内容がアップロードされることはありません。

エンコードでは入力を 4 バイトのビッグエンディアン単位で処理し、各グループを 32 ビット符号なし整数として読み取り、値を繰り返し 85 で割った余りに 33 を足して 5 桁を出力します。これにより各桁は印字可能な範囲 '!'(33)から 'u'(117)に収まります。すべてゼロのグループは 1 文字 'z' に圧縮されます。末尾の n バイト(1〜3)の部分グループはゼロで 4 バイトに埋めてエンコードし、出力末尾の 4−n 文字を切り捨てて n+1 文字を生成します。Adobe バリアントでは結果を '<~' と '~>' で囲みます。

デコードは処理を逆にたどります。空白やラッパーを除去し、'z' は 4 個のゼロバイトに展開し、5 文字グループを value = Σ (cᵢ−33)·85^(4−i) として読み取って 4 バイトのビッグエンディアンとして書き出し、末尾の m 文字(2〜5)の部分グループは 'u'(値 84)で埋めて m−1 バイトを保持します。方向、標準または Adobe バリアント、入力バイトが UTF-8 テキストか 16 進数かを選びます。

よくある質問

'z' ショートカットとは何ですか?
4 個のゼロバイト(0x00000000)のグループは '!!!!!' としてエンコードされます。Ascii85 では圧縮のショートカットとして代わりに 1 文字 'z' を出力します。デコード時、'z' は 4 個のゼロバイトに戻りますが、これはグループ境界に現れた場合に限られ、5 文字グループの途中では決してそうなりません。
Ascii85 は Base64 とどう違いますか?
Base64 は 3 バイトを 4 文字(33% のオーバーヘッド)にエンコードし、Ascii85 は 4 バイトを 5 文字(25% のオーバーヘッド)にエンコードするため、よりコンパクトです。Base64 は 64 記号のアルファベットを使いますが、Ascii85 は '!' から 'u' までの 85 個の印字可能 ASCII 記号を使います。
Adobe バリアントとは何ですか?
PostScript や PDF で使われる Adobe の Ascii85 は、ペイロードを '<~' と '~>' の区切りで囲みます。中核となるアルゴリズムは同一です。Adobe バリアントを選ぶと、エンコード時にこれらのマーカーを追加し、デコード時に除去します。標準バリアントではこれらを省きます。
データはどこかにアップロードされますか?
いいえ。エンコードとデコードは、素の JavaScript と TextEncoder/TextDecoder を使ってすべてブラウザ内で行われます。サーバーには何も送信されないため、プライベートなデータやバイナリデータも安全に処理できます。

その他のツール