這三個工具解的是三件不相干的事:換一個進制來看同一個數、生出一批不重複的值、把數字排版成人看得懂的樣子。共通點是它們都在瀏覽器的數值型別上運作,因此共用同一條天花板 —— 安全整數只到 2^53 - 1。
該用哪一個工具
- 進制轉換
- 看記憶體位址、權限遮罩或組態檔的十六進制數時用它,四個進制欄位互相同步。它只處理整數,小數點打不進去;負數以前面加減號表示而不是二補數,所以
-8的二進制顯示為-1000,不是你在暫存器裡看到的那串 1。數值超出安全整數範圍時上方會出現警告。 - 隨機數產生器
- 要一批測試資料、一個唯一識別碼或一組佔位字串時用它。三個分頁的亂數來源不同,這點比功能本身重要:UUID 分頁走瀏覽器的
crypto.randomUUID,是密碼學等級的來源;整數與字串兩個分頁走Math.random,輸出可被反推,不要拿來當密碼、API 金鑰或重設連結裡的 token。 - 數字格式化
- 要把數字排成報表看得懂的樣子時用它:千分位符號、小數點符號、小數位數(0 到 10)與科學記號都可以選。讀入時它只認
.當小數點,歐洲寫法的1.234,56會被誤讀成 1.234;小數位數是四捨五入補齊的,設少了就是真的丟掉精度。
共通限制
- 三個工具都只認半形阿拉伯數字,全形數字要先用文字工具的全半形轉換處理過。隨機整數與字串一次最多 100 筆,長度上限 256。
- 進制轉換與數字格式化都靠瀏覽器的
Number型別,超過 2^53 - 1 的值(例如 64 位元的資料庫主鍵)會在轉換過程中被無聲地四捨五入,這類數字請在後端以字串處理。 - 產生與轉換都發生在本機,隨機值不是向伺服器要來的,也沒有任何一筆結果被記錄下來;反過來說,離開頁面就找不回來了,需要的話請先按複製。(頁面本身載有第三方廣告資源,與這裡算出來的值無關。)
常見問題
隨機字串可以拿來當密碼嗎?
不建議。字串分頁用的是 Math.random,它的內部狀態可以從足夠多的輸出反推出來,對測試資料夠用,對安全用途則不行;真的需要高強度的值請改用 UUID 分頁。
為什麼十六進制轉出來的長度和我預期的不一樣?
因為這裡輸出的是數值本身的最短表示,不補前導零,也沒有固定位寬的概念。255 轉出來是 FF 而不是 000000FF;要對齊 32 或 64 位元的欄位寬度請自行補零。