不同进制间转换

83 阅读1分钟

前言

对不同进制下的数据做转换处理,是经常会问的考点?其实我们只要知道核心的思路,就可以应付大多数的问题了。

比如m进制转n进制,我们需要做的有以下两步:

  1. 将m进制的数转换成10进制下的值
    m进制转10进制,只需要将初始值每位的数字,乘以m的对应位数的平凡,即可获得。 (这个比较好理解)
  2. 将10进制下的值转换成n进制下的值
    然后就是将10进制下的值,通过除法和取余法,拿到商并做取整,以及余数作为n进制下的值的每一位。
// 进制转换
Number.prototype.selfToString = function (baseNum) {
  var initNum = this;

  var res = '';

  var remain = undefined;

  while (initNum > 0) {
    remain = initNum % baseNum;
    initNum = Math.floor(initNum / baseNum);

    res = remain + res;
  }

  return res;
};

/**
 * 
 * @param {*} initNum 初始值
 * @param {*} initRadix 初始进制数
 * @param {*} toRadix 转化进制数
 * @returns 
 */
function radixTransform (initNum, initRadix, toRadix) {
  // 获取10进制下的值
  const radix10Num = parseInt(initNum, initRadix);
  // 获取需要转成进制下的值
  // const toRadixNum = radix10Num.toString(toRadix);
  const toRadixNum = radix10Num.selfToString(toRadix);


  return toRadixNum;
}

var a = 100; // 2进制
var b = radixTransform(a, 2, 4)
console.log('🚀 --> file: radix-transform.js --> line 31 --> b', b)