您的位置:首页 > Web前端 > JavaScript

js实现进制转换

2017-08-17 23:47 218 查看
/*
进制转换问题。
主要知识点:
十进制转为其他进制时,将数组当作栈来使用;
二进制转为其他进制时,可先转为十进制,再有十进制转为目标进制.
*/
/*
问题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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: