// 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