// 10 进制转 2 进制
const x = 6;
x.toString(2) //'110'
// 2 进制转 10 进制
parseInt('110', 2) //6
复制代码
Number.prototype.toString = function (radix = 10) {
const binary = [];
let value = this.valueOf();
const operator = value < 0 ? '-' : ''
value = Math.abs(value)
while(value >= 1) {
binary.unshift(value % radix)
value = value / 2 | 0;
}
binary.unshift(operator);
return binary.join('')
}
let x = -6;
x.toString(2) //'110'
复制代码
const parseInt = (value, radix) => {
let result = 0;
const operator = value < 0 ? '-' : ''
value = Math.abs(value) | 0;
const binary = value.toString().split('')
while(binary.length) {
const x = binary.shift();
if(x > 0) {
result += radix ** binary.length;
}
}
return operator + result;
}
parseInt('110', 2) //6
复制代码
暂时先实现了简易的二进制转换, 其余进制转换后续完善。markdown