全部編碼同時生成

輸入或貼上一次文字,即可並排檢視二進位、十六進位、Base32 系列、Base58、Base64、Base85 系列、Base91 等編碼結果,每個結果都有單獨的複製按鈕。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 在輸入框中輸入或貼上文字。
  2. 所有編碼隨輸入即時更新:二進位、八進位、十進位、十六進位、Base32 各變體、Base36 到 Base91,以及 uuencode 和 xxencode。
  3. 對比各項輸出,找出最短的編碼,或者只包含你能接受的字元的編碼。
  4. 點選所需結果旁邊的「複製」按鈕。

一次輸入,檢視所有編碼

本頁的每種編碼都會把同樣的位元組轉換成不同的字元組合。把它們放在一起對比,是為專案挑選編碼、辨認日誌或配置檔案中的陌生字串、瞭解各格式差異的最快方式。文字按 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.064
Base321.656(不填充時 52)
Base36約 1.5549 或 50
Base451.548
Base58約 1.3743 或 44
Base62約 1.3442 或 43
Base64約 1.3344(不填充時 43)
Base851.2540
Base91約 1.2339 或 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 計算,文字不會離開你的裝置。