前言
对不同进制下的数据做转换处理,是经常会问的考点?其实我们只要知道核心的思路,就可以应付大多数的问题了。
比如m进制转n进制,我们需要做的有以下两步:
将m进制的数转换成10进制下的值
m进制转10进制,只需要将初始值每位的数字,乘以m的对应位数的平凡,即可获得。 (这个比较好理解)将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)