使い方
- テキストを Base62 に変換するには「エンコード」を、Base62 をテキストに戻すには「デコード」を選択します。
- 使用するシステムに合わせて「アルファベット」の順序を選択します。0-9 A-Z a-z(デフォルト)または 0-9 a-z A-Z です。
- データを入力または貼り付けるか、小さなファイル(約 20 KB まで)を開きます。
- 結果をコピーするか、ファイルとしてダウンロードします。
Base62 とは
Base62 は、10 個の数字、26 個の大文字、26 個の小文字を使います。英字と数字だけで構成できる最大のアルファベットなので、結果を URL、ファイル名、データベースのキー、コード内の識別子に使ってもエスケープは必要ありません。1 文字で約 5.95 ビットを表すため、出力は入力の約 1.34 倍になります。Base64 とほぼ同じくらいコンパクトですが、+、/、=、-、_ は含みません。
62 は 2 のべき乗ではないため、このツールは Base58 や Base36 と同様に、入力全体を 1 つの大きな数として扱い、62 進数に変換します。先頭のゼロバイトは、往復変換で失われないよう、それぞれ先頭の 0 として書き出します。データが大きいと計算が遅くなるため、入力は約 20 KB に制限されています。
Base62 には統一された規格がない
Base64 とは異なり、Base62 には RFC がありません。実装ごとに次のような違いがあり、出力に互換性がありません。
- アルファベットの順序。このツールでは
0-9A-Za-z(デフォルト)と0-9a-zA-Zを選べます。英字を数字の前に置くライブラリもあります。 - 先頭のゼロ。このツールのように先頭のゼロバイト 1 つにつき
0を 1 つ残す実装もあれば、削除する実装もあります。固定長の形式では、結果を決まった桁数まで埋めます。 - エンコードの対象。多くの Base62 関数は、バイト列ではなく、データベースの ID などの整数をエンコードします。データを固定サイズのブロックに分割する実装もあります。
他のシステムで作られた文字列をここでデコードして意味のない結果になる場合は、もう一方のアルファベットを試してください。それでもうまくいかない場合、そのシステムは別の方式を使っていると考えられます。
Base62 の用途
URL 短縮サービスは、自動採番の ID を短いコードに変換します。Base62 の 7 文字で 3.5 兆を超える値を表せます。KSUID のようなソート可能な ID は 27 文字固定の Base62 形式を使います。また、ダブルクリックで文字列全体を選択でき、どこにでも貼り付けられるため、多くのサービスが API キーやトークンに Base62 を使っています。1 つの整数を変換するには、進数変換ツールを使うか、次のような数行のコードを書きます。
// JavaScript:整数(BigInt)を Base62 に変換
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
let s = '';
do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
return s;
}
toBase62(123456789n); // '8M0kX'
仕様
| 使用文字 | 0-9 A-Z a-z |
|---|---|
| 出力サイズ | 約 134%(多倍長整数による変換) |
| パディング | なし |
| 規格 | 正式な規格なし |
| 大文字と小文字の区別 | あり |
エンコード例
| 入力 (UTF-8) | 出力 |
|---|---|
Hello, World! | 1wJfrzvdbtXUOlUjUf |
Base64.is | NWxjrFq4r3rv |
你好 | 19PqtKE1t |
よくある質問
Base62 は URL セーフですか?
Base62 文字列をデコードすると違うテキストになるのはなぜですか?
Base62 の実装は、アルファベットの順序や方式がそれぞれ異なります。0-9A-Za-z と 0-9a-zA-Z のアルファベットを切り替えてみてください。どちらでもうまくいかない場合、その文字列は整数から作られたか、別のアルゴリズムで作られたと考えられます。
Base62 は大文字と小文字を区別しますか?
はい。大文字と小文字は異なる値を表すため、Base62 文字列を大文字や小文字に変換してはいけません。