toolfree

進位轉換

在瀏覽器裡做進位轉換,採用任意精度運算,所以 64 位元的數值是精確的,不會被悄悄四捨五入。

在你的瀏覽器中執行

請輸入一個數字。

大多數轉換器在 2^53 以上都是錯的,而且不聲不響

這就是這一頁存在的理由,值得了解,因為那個錯誤是看不出來的。

JavaScript 的數字是 64 位元浮點數,能精確表示的整數只到 9,007,199,254,740,991——也就是 2^53 − 1。超過之後,parseInttoString(radix) 還是會回給你一個答案,只是低位數字是錯的。

0xFFFFFFFFFFFFFFFF 應該是 18446744073709551615。用一般數字做的轉換器會回 18446744073709552000

而那正是開發者手上會有的輸入:64 位元雜湊值、Twitter 或 Discord 的 snowflake ID、暫存器 內容、檔案位移量。這裡全部使用 BigInt,所以不管多大都是精確的。

前綴與分隔符號都吃

手上是什麼就貼什麼。0xDEAD_BEEF0b1010 10100o7551,234,567 都可以——前綴 會在符合你選的基數時被去掉,底線、空白和逗號一律忽略。

不屬於該基數的數字會被指名拒絕,而不是跳過。把 1g 裡的 g 默默丟掉然後回報 1, 正是一個轉換器對打錯的字給出自信錯誤答案的方式。

二補數,以及「有號位元組」的問題

0xFF 當成有號位元組是多少?」是一個真實的問題,而只會處理數值大小的轉換器答不出來。

同樣的位元,在不同寬度、以及有號與無號之下,代表不同的數。0xFF 無號是 255,當成 8 位元 有號數則是 −10xFFFF 是 65535 還是 −1,取決於你是不是以 16 位元在讀它。

每一種寬度只有在數值放得進去時才會顯示。如果一個數字裝不進一個位元組,就不會給你 8 位元 的讀法,因為根本沒有。

16 以上的基數

2 到 36 的任何基數都可以,用 0-9 接著 a-z。基數 36 是人類還打得出來的最密集形式,這 也是短 ID 和短網址服務常用它的原因。

沒有任何上傳

在這個頁面裡轉換。