Command Palette

Search for a command to run...

數底轉換器:二進位、八進位、十進位、十六進位和所有以 36 為底的內容

數底轉換器:二進位、八進位、十進位、十六進位和所有以 36 為底的內容

T
Toolz Team
|Jul 17, 2026|23 閱讀

轉換器 合集的一部分

第一次基礎轉換讓我花了一個工作夜的時間,罪魁禍首是權限錯誤。部署腳本將檔案模式寫入為 chmod 755,配置載入器從 JSON 檔案中讀取與數字相同的值 755. JSON 沒有八進位文字。裝載機通過了 755 對於預期八進位模式的系統調用,該模式被解釋為十進位 755,二進位中的十進位 755 是 1011110011- 九位欄位中有十位廢話。文件最終獲得了沒有人要求、也沒有人可以解釋的權限。

這就是基礎混亂在實踐中的樣子。這幾乎從來都不是一個難題。它是一個在一種表示法上是正確的,而在另一種表示法上是災難性的值,它跨越了一個邊界,沒有人寫下預期的鹼基。二進制、八進制、十進制和十六進制是寫相同整數的四種方法,電腦會很樂意讓您將它們混合在一起。

所以我建造了 數目 基數轉換器工具。dev 成為我當時真正想要的東西:貼上一個值,說出它的基數,然後立即在其他基數中看到它 - 以及位數、位元組數和以半位元組排列的二進制因此它與上面的十六進制數字對齊。它處理從 2 到 36 的任何基數,它接受 0x, 0b, 和 0o 前綴,並且它在 BigInt 中完成所有算術,因此 256 位元雜湊值可以精確轉換,而不是安靜地四捨五入到垃圾中。

TL;DR: 數字'當您轉換它時,其值永遠不會改變 - 只有符號會改變。這 數目 基數轉換器 在 2 到 36 的任意基數之間轉換整數,同時顯示二進位、八進位、十進位和十六進位,報告位元和位元組長度,使用 BigInt,因此精度在任何大小下都成立,並且完全在瀏覽器中運行。

主要特點

2 到 36 的任何基地

二進位、八進位、十進位和十六進位獲得專用快捷鍵,因為它們是真實程式碼中出現的四個按鈕。但來源下拉式和目標下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉式下拉 0-9A-Z 數字字母表。

確切的大算術

這是行銷副本中最重要且顯示最少的功能。 JavaScript 編號是 IEEE-754 雙倍,它們僅代表最多 2^53 - 1 的整數,即 9,007,199,254,740,991。超過那個, parseIntNumber 開始舍入 - 默默地、沒有錯誤地產生一個看起來合理且錯誤的值。網路上的大多數基本轉換器都是基於這些功能建構的。

這將數字逐位解析為 BigInt 累加器 ((value = value * base + digit) 並透過重複除法渲染出來。沒有精度上限。 64 位元 ID、256 位元雜湊值、RSA 模數、500 位元十進位 - 全部精確轉換。

所有基地一次

一個輸入,四個輸出,即時。面板同時顯示二進位、八進位、十進位和十六進位,如果不是這四個之一,則加上您選擇的自訂基數。大多數基本轉換實際上是交叉檢查 - 您想要確認調試器中的十六進位和日誌行中的十進位是相同的數字 - 並且同時查看所有四個將三步驟任務變成一目了然。

位元長度、位元組長度和半位元組分組

人們轉換為二進位的原因通常不是對位元的好奇心,這是一個大小問題:這是否適合位元組、32 位元 int、有符號短路?因此轉換器報告有效位元長度(255 → 8 位元、256 → 9 位元)和四捨五入的位元組長度。二進位輸出被填充到整數個半位元組並分組為四個,因此每組四個位元直接位於其編碼的十六進位數字下方。

寬恕輸入,精確錯誤

現實世界的價值隨著裝飾而到來。 0xDEADBEEF 從堆疊追蹤中, 0b1010_1111 來自 Rust 字面意思, 0o755 來自 chmod, FF FF FF 從十六進位編輯器複製而來。所有這些都被接受:當前綴與所選基數一致時,前綴將被刪除,下劃線和空格將被視為數字分隔符號。

當某個數字對於您選擇的基數非法時,錯誤會命名它。類型 1092 在 8 進位,你得到 "9" is not valid in base 8. Base 8 uses 0-7.- 不是通用的"無效的輸入",它不會告訴您要查看哪個字元。

負數支持

負值轉換並以前導減號呈現。這就是符號大小表示法,它是誠實的答案,原因在下面的 two's 補碼部分。

完全在瀏覽器中運作

沒有網路往返,沒有上傳,沒有日誌記錄。每次擊鍵都會更新結果,因為算術發生在幾微秒之外,並且頁面在載入後仍然可以工作,完全沒有連接。

如何使用數基轉換器

第 1 步:輸入您的號碼

將值鍵入或貼上到「寄件者」欄位中。您不需要先剝離裝飾 - 0xFF, 0b1010, 0o755, 1010_1111, 和 DE AD BE EF 全部被接受。領導 +- 標誌有效。前導零是無害的。

第 2 步:選擇來源庫

告訴轉換器如何讀取您輸入的內容。這是人們跳過的步驟,也是重要的步驟: 101 二進位為 5,八進位為 65,十進位為 101,十六進位為 257。四個不同的數字,一串字元。快捷方式按鈕涵蓋二進位、八進位、十進位和十六進位;下拉式涵蓋了從 2 到 36 的所有內容。

如果來源庫無法讀取您鍵入的字符,您會收到一條命名該字符的訊息,而不是無聲的錯誤答案。

第三步:選擇目標基地

選擇您想要的基礎。結果會立即出現並在您鍵入時更新 - 沒有轉換按鈕,因為沒有伺服器需要等待。交換按鈕反轉方向並將結果移動到輸入中,這是往返值並確認其存活的最快方法。

第四步:閱讀面板

轉換如下:

  • 所有基地一次- 二進位、八進位、十進位和十六進位的值相同,如果您選擇一個,請加上您的自訂基數。
  • 位元長度、位元組長度、十六進位數字- 尺寸數字。
  • 分組二進制- 這些位元被填充並分成半位元組,與十六進位數字對齊。

第五步:複製

複製裸結果,或複製完整的表達式(255 (base 10) = FF (base 16)) 當您希望轉換在提交訊息、程式碼註解或錯誤報告中進行自我記錄時。第二個選項是當您向其他人解釋數字時使用的選項,因為它帶有基數和數字。

位置符號實際上是如何運作的

我們使用的每個鹼都是a 位置 系統,意思是數字'貢獻取決於它所在的位置。在基數 b 中,位置 i 處的數字(從右側的零開始計算)是值得的 digit × b^i. 該規則產生每個基數。

以十進制 1,234 為例:

1×10³ + 2×10² + 3×10¹ + 4×10⁰ = 1000 + 200 + 30 + 4 = 1234

現在拿 1A3 十六進位,其中 A 為 10:

1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419

相同的規則,不同的基礎。和 10101111 二進制:

1×2⁷ + 0 + 1×2⁵ + 0 + 1×2³ + 1×2² + 1×2¹ + 1×2⁰ = 128 + 32 + 8 + 4 + 2 + 1 = 175

脫離此規則的兩種演算法是整個轉換器:

讀取以 b 為基數的數字 是從左到右的折疊。從零開始,對於每個數字: value = value × b + digit. 這是 Horner's 方法,這就是為什麼轉換器永遠不需要計算 b^i 明確地 - 沒有求冪,沒有浮點,沒有累積誤差。

以 c 為基數寫入值 是重複除法。除以 c,保留餘數作為下一個數字(從右起),用商重複,直到達到零。向後讀取的餘數是數字。

這兩個操作都是精確的整數,這就是為什麼在 BigInt 中執行它們可以讓您在管道中的任何地方進行無舍入的轉換。值 123456789012345678901234567890 轉換為十六進位 as 18EE90FF6C373E0EE4E3F0AD2- 97 位,13 位元組 - 並轉換回剛好開始的小數。在內建的轉換器中嘗試這一點 parseInt.

關於數字字母表有一個值得注意的細節。基數 36 是實用的上限,因為它是您可以用不區分大小寫的 ASCII 字母數字編寫的最後一個基數: 0-9 給你十位數, A-Z 再給你二十六個,10 + 26 = 36。推過它,你需要大小寫靈敏度(以 62 為基數)或符號字母表(以 64 為基數),此時你不再做算術符號 - 你正在做二進制- 到文本編碼,這是一項具有不同規則的不同工作。如果這是您實際需要的,請使用 Base64 轉換器 相反。

為什麼十六進位映射如此乾淨地映射到二進位

六角在程式設計中並不受歡迎,因為它很緊湊。就人類熟悉度而言,對於相同的值,基數 10 比基數 16 更緊湊,如果目標是緊湊性,我們將使用基數 36。六角獲勝有一個結構原因: 16就是24.

這意味著一個十六進制數字恰好編碼四個二進制數字 - 一個半位元組 - 沒有任何進位跨越它們之間的邊界。映射是一個查找表,而不是算術運算:

二進制 十六進位 二進制 十六進位
0000 0 1000 8
0001 1 1001 9
0010 2 1010 一個
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

折 折 11111111 透過將其分成 1111 1111(,讀取桌子上的每個筆尖,然後串聯: FF. 沒有算術。轉換 0xDEADBEEF 透過擴展每個數字來二進制: 1101 1110 1010 1101 1011 1110 1110 1111. 結構得以保留。

因為一個位元組是八位,一個十六進位數字是四位,所以 一個位元組總是恰好是兩個十六進位數字. 0x00 通過 0xFF 涵蓋每個可能的字節,這就是為什麼十六進位轉儲、MAC 位址、顏色代碼和記憶體位址都用十六進位寫入的原因。 0xFF 乍一看,您正在查看一個完整的位元組。十進制 255 不會告訴您任何此類內容 - 您必須知道 255 是 28 - 1,並且您必須對 65535 和 4294967295 進行相同的召回。

八進制的工作原理與 8 = 2³ 相同,因此一個八進制數字恰好是三位。這正是 Unix 檔案權限是八進制的原因:模式是三組三位(為使用者、群組、其他讀取、寫入、執行),三位是一個八進制數字。 chmod 755111 101 101- 現在這些數字意味著某種東西,而不是你記住的神奇數字。這也是我的權限錯誤發生的原因: 755 小數點則不然 755 八進制,與字串無關 755 宣布是哪一個。這 數目 基數轉換器 部分存在是為了讓您可以在三秒鐘內解決這個問題。

Two's 補碼,以及為什麼該工具使用減號

輸入 -42 轉換器返回 -101010. 有些人期待 11010110 並將減號視為錯誤。事實並非如此,原因值得理解,因為它是二進制中最容易被誤解的事情。

二'補碼不是數字的屬性。它是固定寬度暫存器的屬性。

值 -1 沒有規範的二進位表示。在 8 位元 two's 補碼暫存器中確實如此 11111111 (0xFF). 16 位是 0xFFFF. 32 位, 0xFFFFFFFF. 在 64 位元中,十六個 F。這些不是書寫相同位元模式的四種不同方式;他們是四個 不同的位元模式,哪一個是正確的完全取決於類型聲明中的寬度,而不是數字中的寬度。

任意精度整數(這就是 BigInt,也是此轉換器的工作原理)沒有寬度。因此,在沒有附加上下文的情況下,唯一有意義的表示是符號大小:一個負號,後面跟著大小's數字。這就是你得到的,這是誠實的答案,而不是自信的錯誤答案。

當你 需要一個二'補碼模式,食譜很簡單,您可以在這個工具中運行它:

  1. 決定你的寬度, n 位。
  2. 計算 2^n + value (與 value 負數)。對於 8 位元中的 -42:256 - 42 = 214。
  3. 將 214 轉換為您的目標鹼基: 11010110 在二進制中, D6 在十六進制中。

您可能學到的機械快捷方式 - 顛倒每一位,然後添加一位 - 產生相同的結果,因為反轉 x 的所有 n 位給出 (2^n − 1) − x,加一給出 2^n − x. 算術恆等式是相同的運算;位元翻轉版本就是您無需除法器即可完成此操作的方法。

人們實際使用的寬度的快速參考:

寬度 範圍(簽名) 十六進制 -1 最負值
8 位 -128 至 127 FF 80 (-128)
16 位元 -32,768 至 32,767 FFFF 8000
32 位元 -2,147,483,648 至 2,147,483,647 FFFFFFFF 80000000
64 位元 ±9.22×1018 FFFFFFFFFFFFFFFF 8000000000000000

請注意每一行中的不對稱性:負值比正值多一個,因為零佔據正側的槽。這是經典溢位錯誤的來源,其中否定最負的整數會自行返回。如果您想看到直接排列的值或字串的位元,則 二進制翻譯 是這方面的配套工具。

Base 36 的用途是什麼?

Base 36 看起來像一個好奇心,實際上是 " 中最實用的。異國情調;鹼基,原因之一:它是最密集的數字表示法,可以通過大小寫折疊、由人類輸入並放入 URL 中而不會逃脫。

比較相同的 64 位元鹼基值:

基地 64 位元值所需的數字 例子
二進制 (2) 64 1111...
小數 (10) 20 18446744073709551615
十六進位 (16) 16 FFFFFFFFFFFFFFFF
基地36 13 3W5E11264SGSF
基地 62 11 區分大小寫

Base 36 僅使用URL 路徑中安全的字元、檔案名稱中安全的字元、電話中明確的字元以及使用者是否使用大寫字母輸入這些字元的字元,即可節省35% 的十六進位字元和35% 的十進位字元。這就是為什麼它顯示在短連結 ID、發票號碼、優惠券代碼、訂單參考和緊湊的時間戳中。 Date.now().toString(36) 是產生簡短、可排序、可人工輸入 ID 的常見技巧。

權衡是易讀性: 3W5E11264SGSF 這不是你可以像十六進制那樣關注結構的東西,並且沒有乾淨的位對齊,因為 36 不是二的冪。當數字是不透明標識符且目標是緊湊性時,使用基數 36。當數字's位元結構是點時,使用十六進位。

常見用例

調試記憶體和十六進位轉儲。 您的調試器顯示 0x7FFE4A3C,您的日誌顯示 2147330620,你需要知道它們是否是同一個地址。貼一個,讀另一個。

文件權限。 折 折 755 從八進制到二進制再看 111 101 101,這正是模式欄位定義它們的順序中的九個權限位元。這是向某人解釋原因的最快方法 chmod 644chmod 664 不同之處在於一個群組寫入位元。

顏色值。 #FF5733 是三個位元組:紅色 255、綠色 87、藍色 51。將十六進位顏色拆分為十進位分量是一次兩位十六進位數字的轉換。對於完整的工作流程 - 調色板、對比度、格式轉換 - 選色器 端到端處理它,但底層算術正是這樣的。

位遮罩和標誌。 的旗幟字段 0b001011000x2C 十進制 44。 當您檢查設定了哪些標誌時,二進制是唯一可讀的形式;當您將常數寫入程式碼時,十六進位是。你需要兩者,不斷地。

網路和協定工作。 子網路遮罩、MAC 位址、IPv6 群組、協定編號和校驗和在規格中均為十六進位或二進位,在工具的一半中均為十進位。尤其是 IP 位址八位元組,以虛線表示法為十進位,在觸摸遮罩時為二進位。

哈希值和標識符。 一個 SHA-256 輸出為 64 個十六進位字元 - 256 位,32 位元組。將其轉換為十進制會產生一個 78 位數字,而這正是每個樸素轉換器都會中斷的位置,因為它比安全整數上限大約 10^25 倍。如果您產生這些雜湊值而不是轉換它們,則 哈希產生器 在客戶端生產它們。

面試和課程作業問題。 基本轉換是 CS 基礎知識的主要內容,並且有一個參考實作可以同時顯示所有四個公共基礎中的值(以及位元數),可以快速檢查您自己的工作。

基礎比較一覽

基地 指名 數字 每位數的位數 你在哪裡看到的
2 二進制 0-1 1 位元遮罩、標誌、硬體暫存器
8 八進制 0-7 3 Unix 檔案權限、舊版 C 文字
10 小數 0-9 ~3.32 人類所寫的一切
16 十六進位 0-9,AF 4 記憶體位址、顏色、雜湊值、位元組
32 基地 32 0-9,AV 5 緊湊的區分大小寫的編碼
36 基地36 0-9,AZ ~5.17 簡短的 ID、發票代碼、URL 安全號碼

& 引用;每個數字和引用的位元;列解釋了整個表。兩位(2、8、16、32) 的冪的基數每個數字有整數位,這意味著數字映射到沒有跨越邊界的進位的位組- 這就是使十六進制到二進制成為查找而不是計算的原因。不是兩位(10、36)冪的基數每位數有一個小數位,這就是為什麼將十進制轉換為二進制確實需要算術並且不能通過替換來完成。

並且相同的輸入字串可以是具有完全不同值的多個基數的合法數字。 101 是一個值得記住的好方法:

讀為 價值
二進制 5
八進制 65
小數 101
十六進位 257
基地36 1,297

五個數字,一個字串。基數不是顯示首選項 - 它是資料的一部分,本文中的每個錯誤都來自忘記寫下來的地方。

為了更廣泛地了解哪些基於瀏覽器的實用程式值得保留,我收集了我每天使用的實用程式 web 開發人員's 工具包.

問號

如何將十進制轉換為二進位?

將數字重複除以 2,然後從最後讀到第一個。對於42: 42 RAM2 = 21 餘數0、21 RAM2 = 10 餘數1、10 RAM2 = 5 餘數0、5 RAM2 = 2 餘數1、2 RAM2 = 1 餘數0、1 RAM2 = 0 餘數1。自下而上讀取餘數給出101010。轉換器以 BigInt 算術運行此功能,因此對於遠遠超出袖珍計算器可以容納的任何值,它保持精確。

如何將十六進位轉換為十進制?

將每個十六進位數字乘以 16,使其位置為冪,從右側的零開始計數,然後加入乘積。 FF 是 (15 × 16) + 15 = 255。 1A3 是 (1 × 256) + (10 × 16) + 3 = 419。 將來源基數設為 16,將有或沒有 0x 前綴的值貼上,然後立即出現小數。

如何將二進位轉換為十六進位?

從右側開始,將二進位數字分組為四個半位元組,並將每個半位元組對應到一個十六進位數字。 1111111 分成 1111 和 1111,即 F 和 F,因此答案是 FF。分組之所以有效,是因為 16 是 2 的四次方,因此一個十六進位數字恰好編碼四位,並且沒有任何進位跨越群組邊界。這就是為什麼十六進位用於位元組:一個位元組總是恰好是兩個十六進位數字。

為什麼程式設計師使用十六進位而不是十進位?

因為十六進位可以乾淨地映射到二進位和十進制,所以不是。一個十六進位數字恰好是四位,一個位元組恰好是兩個十六進位數字,所以 0xFF 顯然是一個完整字節,而 0xDEADBEEF 顯然是四個位元組。十進制沒有給你這樣的結構:大約 255 沒有宣布它填滿一個位元組。十六進制保持位元佈局可讀,同時是原始二進制長度的四分之一。

這個轉換器可以處理非常大的數字嗎?

是的。每個值都逐位解析為 BigInt,因此沒有 2^53 上限,也沒有任何大小的浮點舍入。 256 位元雜湊值、完整 RSA 模數或 500 位元十進位精確轉換。基於 parseInt 或 Number 建構的轉換器默默地損壞了 9,007,199,254,740,991 以上的值,這正是最難發現錯誤的範圍。

它是否支援負數和 2's 補碼?

負值由前導減號支援和呈現,即符號大小符號。二'故意不應用補碼,因為它是固定寬度暫存器而不是數字的屬性:-1 是 8 位元的 FF,FFFF 是 16 位元的,FFFFFFF 是 32 位元的。產生二'補碼模式,將所選寬度的冪加 2 到負值,並將結果轉換為 - 對於 8 位元的 -42,256 - 42 = 214,即十六進位 D6。

36 底座有什麼用途?

Base 36 使用數字 0-9,後面跟著字母 AZ,使其成為您可以從不區分大小寫的 ASCII 字母數字建立的最密集的數字表示法。它產生短的、URL 安全的、不區分大小寫的字串,這就是為什麼它出現在短連結 ID、發票代碼、優惠券代碼和緊湊的時間戳記中。 64 位元值採用 13 個以 36 為基數的字符,而不是 20 個十進制數字或 16 個十六進制數字。

位元長度和位元組長度是什麼意思?

位元長度是值中有效位元的數量' s 大小,忽略前導零:255 的位元長度為 8,256 的位元長度為 9。位元組長度是四捨五入到下一個八的倍數的數字。他們一起告訴您該值適合的最小整數類型,這通常是有人將數字轉換為二進制的實際原因。

轉換號碼時我的資料會傳送到伺服器嗎?

不。每次轉換都是在瀏覽器中以 JavaScript 計算的,這就是為什麼每次按鍵時結果都會更新,而不是在網路往返之後更新。您輸入的任何內容都不會被傳輸、記錄或存儲,並且一旦頁面加載,轉換器就會在沒有網路連接的情況下繼續工作。

Frequently Asked Questions

Divide the number by 2 repeatedly and read the remainders from last to first. For 42: 42÷2 = 21 remainder 0, 21÷2 = 10 remainder 1, 10÷2 = 5 remainder 0, 5÷2 = 2 remainder 1, 2÷2 = 1 remainder 0, 1÷2 = 0 remainder 1. Reading the remainders bottom-up gives 101010. The converter runs this in BigInt arithmetic, so it stays exact for values far beyond anything a pocket calculator can hold.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!