# 进制转化

# 十进制转(二、八、十六)进制

//转二进制
function decimalToBinary(num) {
  const mod = [];
  while (num) {
    const m = num % 2;
    mod.unshift(m);
    num = (num - m) / 2;
  }
  return mod.join('');
}

//转八进制
function decimalToOctal(num) {
  const mod = [];
  while (num) {
    const m = num % 8;
    mod.unshift(m);
    num = (num - m) / 8;
  }
  return mod.join('');
}
//转16进制
function decimalToHexadecimal(num) {
  const map = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'];
  const mod = [];
  while (num) {
    const m = num % 16;
    mod.unshift(map[m]);
    num = (num - m) / 16;
  }
  return mod.join('');
}

# 二进制转(八、十、十六)进制

先将二进制转为十进制 再分别转八进制和十六进制

//二进制转八进制
function binaryToOctal(num) {
  num = String(num);
  let sum = 0;
  for (let i = 0; i < num.length; i++) {
    sum += Math.pow(2, i);
  }
  return decimalToOctal(sum);
}
console.log(binaryToOctal(11111111));

//二进制转十六进制
function binaryToHexadecimal(num) {
  num = String(num);
  let sum = 0;
  for (let i = 0; i < num.length; i++) {
    sum += Math.pow(2, i);
  }
  return decimalToHexadecimal(sum);
}
console.log(binaryToHexadecimal(11111111));