進制轉換工具
在 2 至 36 進制之間轉換任意整數,涵蓋二進制、八進制、十進制、十六進制等常用進制。輸入數字並選擇來源進制與目標進制,即可顯示轉換結果,支援進制 A–Z 字母位元。
輸入
結果
「進制」究竟是什麼
任何整數都可以用位值記數法來表示。進制(又稱基數或radix)決定了所使用的不同數字符號的數量,以及每個位置的值是多少。
我們日常使用的十進制(base 10),採用 0–9 共十個數字,每個位置的值是右邊位置的十倍:
3,472=3×103+4×102+7×101+2×100改用二進制(base 2),則只有 0 和 1 兩個數字,每個位置的值翻倍:
10112=1×23+0×22+1×21+1×20=1110這就是全部的核心概念。不同的進制只是表達同一個整數的不同方式。
最常用的四種進制
| 進制 | 名稱 | 使用的數字符號 | 主要用途 |
|---|---|---|---|
| 2 | 二進制 | 0、1 | 電腦內部儲存所有資料的方式 |
| 8 | 八進制 | 0–7 | Unix 檔案權限(如 chmod 755)、舊式系統 |
| 10 | 十進制 | 0–9 | 日常計數 |
| 16 | 十六進制 | 0–9、A–F | 記憶體位址、色彩代碼(#FF8800)、位元組值 |
超過十進制的進制需要額外的符號,慣例上使用英文字母:A = 10、B = 11、⋯、Z = 35。因此本工具支援 2 至 36 進制——36 是使用 0–9 加上 A–Z 所能表達的最大進制。
手算方法一:X 進制 → 十進制
將任意進制的數轉換為十進制,只需將每個數字乘以「進制的對應次方」(從右邊第 0 位開始計算),然後加總即可。
將 FF(十六進制)轉換為十進制:
將 1010(二進制)轉換為十進制:
將 377(八進制)轉換為十進制:
可以注意到,FF₁₆、377₈、255₁₀ 三者代表同一個整數,只是寫法不同。
手算方法二:十進制 → X 進制
反方向的轉換,是反覆用目標進制去除,並收集每次的餘數。將餘數由下往上讀出,即為轉換結果。
將 255₁₀ 轉換為十六進制:
| 步驟 | 被除數 | ÷ 16 | 餘數 |
|---|---|---|---|
| 1 | 255 | 15 | 15 → F |
| 2 | 15 | 0 | 15 → F |
由下往上讀:FF ✓
將 10₁₀ 轉換為二進制:
| 步驟 | 被除數 | ÷ 2 | 餘數 |
|---|---|---|---|
| 1 | 10 | 5 | 0 |
| 2 | 5 | 2 | 1 |
| 3 | 2 | 1 | 0 |
| 4 | 1 | 0 | 1 |
由下往上讀:1010 ✓
「中途經過十進制」的技巧適用於任意兩種進制之間的轉換:來源進制 → 十進制 → 目標進制。本工具內部正是採用這個方法。
捷徑:二進制 ↔ 八進制 ↔ 十六進制
由於 8 = 2³、16 = 2⁴,在二進制與這兩種進制之間轉換,只需分組數字即可,完全不需要做除法。
二進制 → 八進制: 從右邊開始,每三位一組,將每組轉換為一個八進制數字。
2010510171112=2578二進制 → 十六進制: 同理,改為每四位一組。
A1010F11112=AF16這也是為何程式設計師在查看記憶體轉儲時偏好十六進制——每兩個十六進制數字恰好對應一個位元組(8 bits = 2 × 4 bits)。
實際使用場景
程式設計與除錯
- CSS 十六進制色碼:
#FF8800代表 R =FF(255)、G =88(136)、B =00(0)。 - 除錯器、堆疊追蹤、反組譯器中的記憶體位址一律以十六進制顯示(如
0x7fff8a3b0c40)。 - 位元遮罩與旗標以二進制或十六進制表達比十進制更易讀,因為每個數字直接對應特定的位元位置。
- Unix 檔案權限使用三位八進制數:
chmod 755代表擁有者有讀、寫、執行權(7),群組與其他人有讀、執行權(5)。
嵌入式系統與電子硬體
微控制器的暫存器設定、GPIO 腳位配置、硬體規格書等,都以十六進制或二進制撰寫,因為每個位元通常都有特定含義。轉換成十進制反而會模糊整體結構。
密碼學與雜湊函數
SHA-256(256 位元)、MD5(128 位元)等雜湊值若以十進制表示將難以閱讀,因此一律以十六進制呈現。
邊界情況說明
- 零在任何進制下都相同。
0₂、0₁₆、0₃₆都代表同一個值。 - 小於進制的單位數在各進制中寫法相同。 十進制、八進制、十六進制中的
7都是一樣的7。但8在十進制和十六進制有效,在八進制卻無效——這正是本工具輸入驗證所檢測的錯誤。 - 英文字母的大小寫不影響結果。
FF、Ff、ff都代表相同的十六進制值 255。 - 負數與小數不在本工具的支援範圍內,這是一個純整數轉換器。
動手試試看
輸入 FF,來源進制選 16,目標進制選 2,結果應為 11111111。這是一個所有位元都為 1 的位元組,也是無號 8 位元整數的最大值。接著試試將 255 從十進制轉換為十六進制——結果回到 FF。同一個數,三種不同的寫法。