# 000 -- 实现进制之间相互转换

# 题目

实现各种进制之间的相互装换

# 代码实现

TIP

十进制转化为其他任意进制的数,这里是采用的数学上的进制转换竖式,不断进行除法取余,最后余数倒序输出即为所求

/**
 * 10进制转换为任意进制
 * @param {Number} number 十进制数值 
 * @param {*} sys 要转换的进制
 */
function scale(number, sys) {
  let stack = [];
  let num = number;
  let rem;
  let binaryStr = '';
  while (num > 0) {
    rem = Math.floor(num % sys);
    stack.push(rem);
    num = Math.floor(num / sys);
  }
  return stack.reverse().join('');
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

TIP

任意进制转换为十进制,其实就是根据每个位上的数字乘上该位的基准,最后将数值相加即可

/**
 * 任意进制转换为10进制
 * @param {String} str sys进制数字表示的字符串 
 * @param {*} sys 进制数
 */
function scaleten(str, sys) {
  let num = 0;
  for (let i = 0; i< str.length; i++) {
    num += Number(str.charAt(i)) * Math.pow(sys, str.length - i - 1);
  }
  return num;
}
1
2
3
4
5
6
7
8
9
10
11
12
上次更新: 6/2/2020, 6:42:10 PM