0%

Javascript: 十進制數字與其他進制數字互相轉換

相較其他語言,在javascript中,要將十進制的數字轉換成其他進制的數字算是相對容易,函式在讀取參數的時候只要有相對應的前綴就會自動幫你轉換,但同時也有不便之處,這篇會來介紹我所採的雷以及如何轉換十進制成其他進制。

十進制轉換成其他進制

在你的程式碼中想要做到十進制轉換成不同進制只需要用到 toString() 這個函式。
舉例來說我想把10進制轉成8進制以及2進制,可以這樣寫:

1
2
(11).toString(2);//10進制的11轉2進制表示
(156).toString(8);//10進制的156轉8進制表示
  • 不過要注意使用了toString後資料型態會變成字串,你想要它變回數字的話記得使用parseInt();

其他進制轉成十進制

那如果想要反過來將其他進制轉成十進制就可以使用 parseInt() 這個函式,程式碼如下

1
2
3
let num = 11;
parseInt(num, 2);//將2進制的11轉成10進制
parseInt(num, 8);//將8進制的11轉成10進制

參數的自動轉換

在javascript中,如果數字以0作為前綴,它會將數字視為8進制並自動轉換成10進制
比如說我這樣寫:

1
console.log(010)

輸出會是8,又或者是以0x為前綴則會視為16進制。

這個看似方便的功能也帶給我一些麻煩,我遇到一個題目是輸入有可能會有032這樣的輸入,但js卻會自己幫我轉型,我試著想要取消自動轉型似乎是辦不到,唯一的方法就是改成用字串輸入,所以大家在做的時候要注意使用者是否會誤輸格式,又或者是你必須限制使用者只能輸入字串。如果有人知道如何實作取消自動轉型歡迎和我分享。