js实现进制转换

/*
        进制转换问题。
        主要知识点:
            十进制转为其他进制时,将数组当作栈来使用;
            二进制转为其他进制时,可先转为十进制,再有十进制转为目标进制.
 */
/*
    问题1:十进制转为其他进制(二进制~十进制、十六进制)
 */
/*
    Unicode编码中,第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;
    65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
 */
function dec2(num,base){
    var arr=[];
    var res="";
    var mod;
    do{
        mod=num%base;
        mod=mod>9?String.fromCharCode(mod+55):mod; // 将大于9的余数转为对应的字符
        arr.push(mod);
        num=Math.floor(num/base); // 此处向下取整不可少
    }while(num>0);

    while(arr.length>0){
        res+=arr.pop();
    }
    
    return res;
}

console.log(dec2(32,2)); // 100000
console.log(dec2(125,8)); //175
console.log(dec2(32,16)); // 20
console.log(dec2(32,10)); // 32
//console.log(dec2(32,1)); // 没有1进制
console.log(dec2(173,16)); // AD

/*
    问题2:二进制转十进制
 */

function bin2dec(binStr) {
    var arr=binStr.split('');
    var len=arr.length;
    var res=0;
    arr.forEach(function (item,index) {
        res+=item*Math.pow(2,len-index-1);
    });
    return res;
}

console.log(bin2dec("100000")); //32

/*
    问题3:二进制转其他进制
 */
function bin2(binStr,base) {
    // 先将二进制转为十进制
    var num=bin2dec(binStr);
    //再将十进制转为其他进制
    return dec2(num,base);

}

console.log(bin2("100000",8)); //40
console.log(bin2("100000",16)); //20
console.log(bin2("100000",5)); //112
console.log(bin2("100000",2)); //100000
console.log(bin2("100000",10)); //32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值