> base36 | 0-9,A-Z | 緊湊 <
// Base36 —— 使用數字 0-9 與字母 A-Z 的緊湊字母數字編碼
僅使用字母與數字
只使用數字 0-9 與字母 A-Z,與資料庫、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 - 短網址 - 工作階段權杖 - 產品序號 - 授權金鑰
為何使用 Base36:
- ▸從整數產生短且易讀的識別碼
- ▸建立不含特殊字元的 URL 安全部權杖
- ▸將數值壓縮成緊湊的字母數字字串
- ▸多數實作不區分大小寫,對大小寫變化更寬容
- ▸在某些情境下,比十六進位表示更容易理解
>> 常見問題
什麼是 Base36?
Base36 是一種位置記數系統,使用 36 個不同符號:數字 0-9 與字母 A-Z。只用字母與數字即可緊湊地表示整數。
Base36 一般用在哪些場合?
Base36 常用於產生短 ID,如短網址、公開資源 ID、產品序號、工作階段權杖等,同時兼顧緊湊與可讀。
Base36 會區分大小寫嗎?
在多數實作中,Base36 對大小寫不敏感:A-Z 與 a-z 通常被視為相同,有助於避免大小寫差異造成的錯誤。
Base36 與其他編碼方式相比如何?
Base36 比十進位(base10)更緊湊,但不如十六進位(base16)或 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)
>> 更多問題
問:在 JavaScript、Python、Java 中如何使用 Base36?
答:JavaScript、Java、PHP、Go 都內建支援:(123).toString(36) 得到 "3f",parseInt("3f", 36) 還原為 123。Python 中 int(s, 36) 可解碼,編碼需自行寫一個小迴圈。
問:Base36 能編碼的最大整數是多少?
答:理論上沒有上限,Base36 只是一種位置計數法。實際受整數型別限制:JavaScript 中 Number.MAX_SAFE_INTEGER(2⁵³−1)對應 2gosa7pa2gv,更大的值請使用 BigInt。
問:為什麼 YouTube 和短網址的 ID 看起來像 Base36/Base62?
答:短 ID 通常由大整數(資料庫 ID 或雜湊)轉換到更高進位得到。Base36 不分大小寫;Base62 更短,但區分大小寫。