Base36 エンコーダー・デコーダー

テキスト、16進数のバイト列、ファイルを、10 個の数字と 26 個の英字からなる Base36 に変換し、Base36 の文字列をバイト列に戻します。大文字での出力も選べます。

すべてブラウザ内で処理され、データはアップロードされません。

使い方

  1. テキストを Base36 にするには「エンコード」を、Base36 をテキストに戻すには「デコード」を選択します。
  2. テキストを入力または貼り付けるか、小さなファイル(約 20 KB まで)を開きます。
  3. 出力に大文字が必要な場合は「大文字」をオンにします。
  4. 結果をコピーするか、ファイルとしてダウンロードします。

Base36 とは

Base36 は、10 個の数字とラテン文字 26 字、つまり 0-9 に続く a-z でデータを表します。大文字と小文字を区別せずに数字と英字だけで作れる最大のアルファベットなので、大文字と小文字を変換したり区別しなかったりするシステムでも Base36 の文字列はそのまま使えます。1 文字が約 5.17 ビットを表すため、出力は入力の約 1.55 倍のサイズになり、Base32 よりわずかに短くなります。

36 は 2 のべき乗ではないため、バイト列を単純にビット単位のグループに分けることはできません。代わりに、このツールは入力全体を 1 つの大きな符号なし整数として読み取り、36 進数に変換します。これは Base58 と同じ方法です。数値にすると先頭のゼロバイトが失われてしまうため、それぞれを先頭の 0 として書き出し、デコード時に復元します。この計算は入力が大きいと遅くなるため、受け付ける入力は約 20 KB までです。

Base36 の用途

  • 短い ID。URL 短縮サービス、注文番号、チケットコードでは、データベースの数値 ID を 36 進数で表示することがよくあります。たとえば Reddit は、投稿やコメントの ID に 36 進数を使っています。
  • 大文字と小文字を区別しない場所。DNS 名や一部のファイルシステムは、大文字と小文字を区別しません。このため IPFS は、サブドメイン形式のゲートウェイアドレスで一部の識別子を Base36 形式で表しています。
  • コード内の数値。36 は、ほとんどのプログラミング言語が整数の変換で標準サポートしている最大の基数です。

大文字と小文字が保持され、できるだけ短い英数字の文字列が必要な場合は、よりコンパクトな Base62 を使いましょう。

コードで Base36 の数値を扱う

このページはバイト列をエンコードします。整数を変換するには、お使いの言語の組み込み関数か、基数変換ツールを使用してください。

// JavaScript
(1000000).toString(36)        // 'lfls'
parseInt('lfls', 36)          // 1000000
123456789012345678901234567890n.toString(36)   // 大きな値には BigInt を使用

# Python
int('lfls', 36)               # 1000000
# 逆方向の変換を行う組み込み関数はありません

parseInt は Number.MAX_SAFE_INTEGER を超えると精度が失われます。それより大きな値は、各桁を自分で BigInt に加算していく必要があります。

仕様

使用文字0-9 a-z
出力サイズ約 155%(多倍長整数による変換)
パディングなし
規格正式な規格なし
大文字と小文字の区別なし

エンコード例

入力 (UTF-8)出力
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好2h5exfqm65

よくある質問

Base36 は大文字と小文字を区別しますか?

いいえ。出力はデフォルトで小文字で、「大文字」オプションで大文字に切り替えられます。デコーダーはどちらも受け付けます。

別のツールと Base36 の結果が異なるのはなぜですか?

Base36 には正式な規格がありません。数値をエンコードするツールもあれば、バイト列をエンコードするツールもあり、先頭のゼロバイトの扱いも異なります。このツールは入力のバイト列を 1 つの大きな数としてエンコードし、先頭のゼロバイトをそれぞれ 0 として書き出します。

サイズの上限はありますか?
はい、約 20 KB です。多倍長整数の変換は入力が大きくなるほど時間がかかるためです。ファイルや大きなデータには、Base32 や Base64 のほうが適しています。
数値を Base36 に変換するにはどうすればよいですか?
基数変換ツールを使用してください。10進数の値を Base36 やその他の基数で表示できます。このページは入力をテキストまたはバイト列として扱うため、100 と入力すると、数値の 100 ではなく 1、0、0 という文字がエンコードされます。