使用方法
- 在輸入框中輸入或貼上文字。
- 所有編碼隨輸入即時更新:二進位、八進位、十進位、十六進位、Base32 各變體、Base36 到 Base91,以及 uuencode 和 xxencode。
- 對比各項輸出,找出最短的編碼,或者只包含你能接受的字元的編碼。
- 點選所需結果旁邊的「複製」按鈕。
一次輸入,檢視所有編碼
本頁的每種編碼都會把同樣的位元組轉換成不同的字元組合。把它們放在一起對比,是為專案挑選編碼、辨認日誌或配置檔案中的陌生字串、瞭解各格式差異的最快方式。文字按 UTF-8 轉成位元組後再編碼,因此一個帶重音的字母佔 2 個位元組,一個漢字佔 3 個位元組。所有計算都在瀏覽器中完成。
- 逐位元組數字。二進位、八進位和十進位把每個位元組單獨寫出,直觀易讀,但結果很長。
- 按位分組。十六進位、Base32(含 Base32hex、Crockford、z-base-32)、Base64 和 Base64URL 中每個字元代表固定的位數,所以輸出長度只取決於輸入長度。
- 大數轉換。Base36、Base58 和 Base62 把整個輸入視為一個大整數。輸出長度會因數值不同而相差一個字元,開頭的零位元組會保留為開頭的字元。
- 分塊編碼。Base45 把 2 個位元組變成 3 個字元,Ascii85、Z85 和 Base85 把 4 個位元組變成 5 個字元,Base91 則用每兩個字元承載 13 或 14 位。
- 按行編碼。uuencode 和 xxencode 是早期電子郵件和 Usenet 使用的格式,按行寫出資料,每行開頭有一個表示長度的字元。
輸出長度對比
下表列出每種編碼平均每個輸入位元組需要多少個字元,以及 32 位元組的資料(例如 SHA-256 雜湊或 Ed25519 公鑰)編碼後的長度:
| 編碼 | 每位元組字元數 | 32 位元組編碼後 |
|---|---|---|
| Base16(十六進位) | 2.0 | 64 |
| Base32 | 1.6 | 56(不填充時 52) |
| Base36 | 約 1.55 | 49 或 50 |
| Base45 | 1.5 | 48 |
| Base58 | 約 1.37 | 43 或 44 |
| Base62 | 約 1.34 | 42 或 43 |
| Base64 | 約 1.33 | 44(不填充時 43) |
| Base85 | 1.25 | 40 |
| Base91 | 約 1.23 | 39 或 40 |
從十六進位換成 Base64 可以縮短三分之一;再從 Base64 換成 Base91,只能再省大約 8%。
如何選擇編碼
最短的編碼不一定最合適。Ascii85 的輸出可能包含引號和反斜槓,Base91 可能包含雙引號,放進 JSON、HTML 或命令列時往往需要轉義。選擇時先想清楚字串要用在哪裡:
- URL 和檔名:Base64URL、Base58 或 Base62。
- 需要朗讀或手動輸入:Crockford Base32 或 Base58,它們去掉了外形相近的字元。
- 不區分大小寫的系統:十六進位、Base32 或 Base36。
- 二維碼:Base45,只使用二維碼字母數字模式支援的字元。
- PDF、Git、ZeroMQ 中的緊湊文字:Ascii85、Base85 或 Z85。
- 追求最廣泛的相容性:Base64,幾乎所有程式語言和平臺都支援。
常見問題
哪種編碼的輸出最短?
在本頁的編碼中,Base91 最緊湊,每位元組約 1.23 個字元;其次是 Ascii85、Z85 和 Base85,每位元組 1.25 個字元。Base64 每位元組約 1.33 個字元,但支援範圍廣得多,所以通常是預設選擇。
為什麼輸入長度相同,Base58 和 Base62 的結果長度卻不一樣?
它們把整個輸入當作一個大數來轉換,輸出長度取決於數值大小,而不只是位元組數。開頭每多一個零位元組,結果也會多一個前導字元。十六進位、Base32 和 Base64 對相同位元組數的輸入,輸出長度總是一樣的。
為什麼二進位結果這麼長?
二進位每個位元組要寫 8 位數字,再加上分隔符,長度至少是十六進位的四倍。它適合檢視具體的每一位,不適合儲存或傳輸資料。
我的文字會被上傳到伺服器嗎?
不會。所有編碼都由瀏覽器中的 JavaScript 計算,文字不會離開你的裝置。