> base36 | 0-9,A-Z | compact <
// Base36 – 0-9 と A-Z を使ったコンパクトな英数字エンコード
英数字のみ
0-9 と A-Z のみを使用するため、多くのシステム・データベース・URL で安全に利用できます。
コンパクトな表現
大きな数値を 10 進数より短い英数字文字列として表現でき、共有やログ表示に便利です.
URL 向けに最適化
特殊文字を含まないため、短縮 URL、公開 ID、プロダクトコード、ライセンスキーなどに最適です。
>> 技術情報
Base36 の仕組み:
Base36 は基数 36 の位置表記法で、36 個の記号(0-9, A-Z)を使ってデータを表現します。各桁は 36 の累乗を表し、大きな数値を短い英数字文字列に圧縮できます。
Base36 の例:
数値 → Base36: 123 → 3F 1000 → RS 999999 → LFLR テキスト → Base36(バイト経由): Hi → 1Q5 ABC → 3O0AF 主な用途: - 動画 ID - 短縮 URL - セッショントークン - 製品コード - ライセンスキー
Base36 を使う理由:
- ▸大きな数値から短く読みやすい ID を生成できる
- ▸特殊文字を含まない URL セーフなトークンを作成できる
- ▸数値をコンパクトな英数字文字列に圧縮できる
- ▸多くの実装で大文字小文字を区別しないため、表記揺れに強い
- ▸16 進数より人間にとって扱いやすいケースがある
>> よくある質問
Base36 とは?
Base36 は 36 個の記号(数字 0-9 と英字 A-Z)を用いる位置表記の数値システムです。英数字のみで数値をコンパクトに表現できます。
Base36 はどこで使われますか?
Base36 は短い公開 ID、短縮 URL、セッショントークン、製品コードなど、人が読むケースも多い識別子に広く使われています。
Base36 は大文字小文字を区別しますか?
多くの実装では Base36 は大文字小文字を区別しません。A-Z と a-z は同じとして扱われるため、表記ゆれや入力ミスに強くなります。
Base36 は他のエンコード方式と比べてどうですか?
Base36 は 10 進数よりコンパクトですが、16 進数や Base64 ほどではありません。英数字のみを使うことで、互換性と読みやすさのバランスを取っています。
// クイックリファレンス
| DEC | HEX | Base36 | Base62 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 35 | 23 | z | z |
| 36 | 24 | 10 | A |
| 100 | 64 | 2s | 1c |
| 1000 | 3e8 | rs | G8 |
| 123456789 | 75bcd15 | 21i3v9 | 8M0kX |
| 4294967295 | ffffffff | 1z141z3 | 4gfFC3 |
// コード例
JavaScript (123).toString(36) // "3f" parseInt("3f", 36) // 123
Python int("3f", 36) // 123 (no built-in int -> base36; write a loop)
Java Integer.toString(123, 36) Long.parseLong("3f", 36)
PHP base_convert("123", 10, 36)
Go strconv.FormatInt(123, 36) strconv.ParseInt("3f", 36, 64)
>> その他の質問
Q: JavaScript・Python・JavaでBase36はどう書きますか?
A: JavaScript、Java、PHP、Goには標準機能があります。(123).toString(36) は "3f"、parseInt("3f", 36) は123に戻ります。Pythonでは int(s, 36) でデコードでき、エンコードは短いループで書きます。
Q: Base36でエンコードできる最大の整数は?
A: 理論上の上限はなく、Base36は単なる位取り記法です。実際には整数型が制限します。JavaScriptの Number.MAX_SAFE_INTEGER(2⁵³−1)は 2gosa7pa2gv で、それ以上は BigInt を使います。
Q: YouTubeや短縮URLのIDがBase36/Base62に見えるのはなぜ?
A: 短いIDは、大きな整数(DBのIDやハッシュ)をより大きな基数に変換して作るのが一般的です。Base36は大文字小文字を区別せず、Base62はさらに短くなりますが区別します。