阅读 45

手写一个简易进制转换

原生进制转换

// 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
复制代码

暂时先实现了简易的二进制转换, 其他进制转换后续完善。

文章分类
前端
文章标签