進位制轉換器

在 2 到 64 之間的任意進位制間轉換整數。一次性給出二進位制、八進位制、十進位制、十六進位制、36 進位制、58 進位制和 64 進位制結果,基於 BigInt 支援任意精度。

在 2 到 64 之間的任意兩種進位制之間轉換整數。 輸入數值並選擇它所使用的進位制,各種常見表示會立即同步更新。轉換基於 JavaScript BigInt 實現,遠超 2^53 的大數也能保持完整精度。

理解位置計數法與進位制

進位制到底是什麼

在位置計數法中,進位制(基數)決定了每一位的權重。十進位制裡 237 表示 2×100 + 3×10 + 7×1;同樣的數字串在十六進位制中表示 2×256 + 3×16 + 7 = 567。轉換過程中數值本身沒有變化,改變的只是書寫方式。

數字字母表

N 進位制需要 N 個不同的符號。0-9 覆蓋前十個,之後由字母接手:a 代表 10,b 代表 11,直到 z 代表 35。超過 36 進位制後繼續使用大寫字母,最後是 +/,本工具正是採用這一順序。36 進位制及以下按慣例不區分大小寫;36 以上大小寫則代表不同符號。

各種進位制的實際用途

  • 二進位制直接對應硬體。暫存器內容、位掩碼和許可權標誌用二進位制最直觀。
  • 八進位制每三個位元一組,這正是 Unix 檔案許可權寫作 755 的原因。
  • 十六進位制每四個位元一組,一個十六進位制位恰好對應半位元組。記憶體地址、顏色值和雜湊值都在用它。
  • 36 進位制是在不區分大小寫的系統(如 DNS 標籤)中仍然可用的最緊湊進位制。
  • 58 進位制是 62 進位制去掉容易看錯的 0OIl。比特幣地址和許多短鏈服務都在使用。
  • 64 進位制把三個位元組編碼成四個可列印字元,是在純文本通道中傳輸二進位制資料的標準做法。

精度說明

JavaScript 原生數字在超過 2^53 後會丟失精度。本轉換器全程使用 BigInt,因此 200 位的十進位制數也能精確轉換成二進位制而不會被悄悄四捨五入。支援負數,負號會在各進位制間保留。

開源說明:轉換基於 JavaScript 原生 BigInt API 實現,未使用任何第三方數值庫。

常見問題

為什麼 58 進位制少了幾個字元?
58 進位制刻意去掉了 0、O、I、l,因為它們在列印或手寫時極易混淆。這讓地址在人工抄寫時更安全,比特幣也因此採用了它。
這裡的 64 進位制和郵件附件用的 Base64 一樣嗎?
不一樣。本工具把 64 進位制當作單個整數的位置計數法。附件編碼(RFC 4648)處理的是位元組流,還會用「=」補齊。那種場景請使用 Base64 工具。
可以轉換非常大的數嗎?
可以。全部運算走 BigInt,幾百位的數也能精確轉換,不會像普通 JavaScript 數字那樣在 2^53 處悄悄丟精度。
輸入區分大小寫嗎?
36 進位制及以下不區分:十六進位制裡 FF 和 ff 都表示 255。從 37 進位制開始,大寫和小寫是不同符號,因此需要區分。
如何轉換負數?
直接在前面加負號即可,符號會帶到每一種輸出進制中。補碼錶示是另一個概念,本工具不做補碼處理。
資料會上傳到伺服器嗎?
不會。轉換完全在你的瀏覽器內完成,輸入的數值不會離開本機。