手寫一個簡易進制轉換

原生進制轉換

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

相關文章
相關標籤/搜索