encode | decode | 字母數字

> base36 | 0-9,A-Z | 緊湊 <

// Base36 —— 使用數字 0-9 與字母 A-Z 的緊湊字母數字編碼

0 字元
0 字元
[ALPHANUMERIC]

僅使用字母與數字

只使用數字 0-9 與字母 A-Z,與資料庫、URL 以及多數文字環境高度相容。

[COMPACT]

緊湊表示

比十進位更緊湊地表示大整數,同時維持良好的可讀性與可分享性。

[URL-SAFE]

適合 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。它只使用字母與數字,在緊湊度與易讀性之間取得平衡。

// 速查表

DECHEXBase36Base62
0000
3523zz
362410A
100642s1c
10003e8rsG8
12345678975bcd1521i3v98M0kX
4294967295ffffffff1z141z34gfFC3

// 程式碼範例

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 更短,但區分大小寫。

其他語言

已複製!