デコード結果
エンコード結果
Ascii85について
Ascii85は、7ビットの印字可能なASCII文字を使用した符号化方式です。Base85とも呼ばれます。
Ascii85では、データを4バイトずつに分割し、それらを5文字のASCII文字に変換して表します。
Ascii85には様々な亜種が存在します。DenCodeでは、以下の3種類のAscii85に対応しています。オリジナルは btoa で、その後に Adobe や Z85 が登場しました。
| 概要 |
Z85 | ZeroMQで使用される。"\"(バックスラッシュ)や"'"(アポストロフィー)のようなエスケープが必要な文字を使用しないようにしたもの。 |
Adobe | AdobeのPostScriptやPDF(Portable Document Format)ファイル内での画像等のエンコードに使用されている。 "<~" と "~>" で囲まれる。 |
btoa | UNIXのbtoaコマンドの形式。過去にバイナリーデータの交換に使用されていたが、現在は一般的ではない。 "xbtoa Begin" と "xbtoa End" の行で囲まれる。 |
Ascii85で使用されるASCII文字は以下のとおりです。4バイトの値をビッグエンディアンの符号なし整数として扱い、それを85進法の各桁(5桁)を計算したうえで、以下のASCII文字をもとにAscii85の変換結果を求めます。
| ASCII文字 |
Z85 | 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$# |
Adobe | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu |
btoa | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu (オリジナルは " "(スペース)から "t" までの文字だったが、末尾のスペースを除外するメーラーがあったため、後にスペースを除いた "!" から "u" の文字に置き換えられた。) |
例えば、「Hello」をAscii85で変換すると以下のようになります。
1. 4バイトごとに区切る。4バイトに満たない場合は末尾を「00」でパッディングする。
48656C6C(16) 6F000000(16) (Hell o)
2. 4バイトごとにビッグエンディアンの符号なし整数として扱い、その値を85進法の各桁に変換する。
48656C6C(16)
= 1214606444(10)
= 23 * 854 + 22 * 853 + 66 * 852 + 52 * 85 + 49
6F000000(16)
= 1214606444(10)
= 35 * 854 + 57 * 853 + 33 * 852 + 65 * 85 + 26
3. 85進法の各桁をASCII文字に変換する。末尾を「00」でパッディングした場合は、Adobe/Z85の場合はパディング分を除外する。
| 23 | 22 | 66 | 52 | 49 | | 35 | 57 | 33 | 65 | 26 |
Z85 | n | m | = | Q | N | | z | V | | | |
Adobe | 8 | 7 | c | U | R | | D | Z | | | |
btoa | 8 | 7 | c | U | R | | D | Z | B | b | ; |
4. 文字を全て繋げてAscii85の変換結果とする。Adobeは、 "<~" & "~>" で括り、80文字ごとに改行する。btoaは "xbtoa Begin" & "xbtoa End" (データ長やチェックサムなども含む)で括り、78文字ごとに改行する。
| 変換結果 |
Z85 | nm=QNzV |
Adobe | <~87cURDZ~> |
btoa | xbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f |
その他、いくつかの短縮形が定義されています。
| 短縮形 |
Z85 | なし |
Adobe | 00000000(16) -> z |
btoa | 00000000(16) -> z 20202020(16) -> y (btoa v4.2以降)
|