相較其他語言,在javascript中,要將十進制的數字轉換成其他進制的數字算是相對容易,函式在讀取參數的時候只要有相對應的前綴就會自動幫你轉換,但同時也有不便之處,這篇會來介紹我所採的雷以及如何轉換十進制成其他進制。
十進制轉換成其他進制
在你的程式碼中想要做到十進制轉換成不同進制只需要用到 toString() 這個函式。
舉例來說我想把10進制轉成8進制以及2進制,可以這樣寫:
1 | (11).toString(2);//10進制的11轉2進制表示 |
- 不過要注意使用了toString後資料型態會變成字串,你想要它變回數字的話記得使用parseInt();
其他進制轉成十進制
那如果想要反過來將其他進制轉成十進制就可以使用 parseInt() 這個函式,程式碼如下
1 | let num = 11; |
參數的自動轉換
在javascript中,如果數字以0作為前綴,它會將數字視為8進制並自動轉換成10進制
比如說我這樣寫:
1 | console.log(010) |
輸出會是8,又或者是以0x為前綴則會視為16進制。
這個看似方便的功能也帶給我一些麻煩,我遇到一個題目是輸入有可能會有032這樣的輸入,但js卻會自己幫我轉型,我試著想要取消自動轉型似乎是辦不到,唯一的方法就是改成用字串輸入,所以大家在做的時候要注意使用者是否會誤輸格式,又或者是你必須限制使用者只能輸入字串。如果有人知道如何實作取消自動轉型歡迎和我分享。