1. 程式人生 > 其它 >JS之進位制轉換(十進位制轉8,12,36進位制)

JS之進位制轉換(十進位制轉8,12,36進位制)

1.toString() 方法 :把數字轉化成字串

number.toString(radix)

radix:可選。規定表示數字的基數,是 2 ~ 36 之間的整數。若省略該引數,則使用基數 10。但是要注意,如果該引數是 10 以外的其他值,則 ECMAScript 標準允許實現返回任意值。

  • 2 - 數字以二進位制值顯示
  • 8 - 數字以八進位制值顯示
  • 16 - 數字以十六進位制值顯示

例子:

var num = 15;
var a = num.toString();
var b = num.toString(2);
var c = num.toString(8);
var d = num.toString(16);
console.log('這是十進位制的15轉換的2進位制' + b)
console.log('這是十進位制的15轉換的8進位制' + c)
console.log('這是十進位制的15轉換的16進位制' + d)

  

2.32進位制轉換

思路: 把需要轉換的數進行 36的除法運算,餘數不斷除36,出來的數進行字串的拼接

那我們開始實現:

function getNums36() {
            var nums36 = [];
            for (var i = 0; i < 36; i++) {
                if (i >= 0 && i <= 9) {
                  // 數字屬於1 -9 取值
                    nums36.push(i);
                } else {
                   // 如果不是1到9,從字母中取 :String.fromCharCode(i + 87) 
                    nums36.push(String.fromCharCode(i + 87));
                }
            }
            return nums36;
        }

        //十進位制數轉成36進位制
        function scale36(n){
            var arr = [];
            var nums36 = getNums36();
            while(n){
                var res = n % 36;
                //作為下標,對應的36進位制數,轉換成
                arr.unshift(nums36[res]);
                //去掉個位
                n = parseInt(n / 36);
            }
            return arr.join("");
        }