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

JS实现进制转换

2017-03-05 14:21 281 查看
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用对象.toString()即可实现:

//10进制转为16进制
(10).toString(16) // =>"a"
//8进制转为16进制
(012).toString(16) // =>"a"
//16进制转为10进制
(0x16).toString(10) // =>"22"
//16进制转为8进制
(0x16).toString(8) // =>"26"
//10进制转为2进制 //=>
(1111).toString(2) // => "10001010111"
//8进制转为2进制 //=>
(01111).toString(2) //=>"1001001001"
//16进制转为2进制 //=>
(0x16).toString(2) // => "10110"

如果是其它进制转10进制,则需要用paresInt这个方法:

//2进制到10进制;
parseInt(10,2) //=>2
//2进制到10进制;
parseInt(100,2) //=>4
//16进制到10进制
parseInt(12, 16) //=>18
//8进制到10进制
parseInt(12,8); //=>10


这样显得颇为麻烦,为此我封装了一个函数,可以自由的实现进制转换:
/**
* 进制转换函数
* @param string num 待转换的进制数,如 110(二进制),26(八进制),10(十进制),AF(十六进制)
* @param Interger from 源进制 2|8|10|16
* @param Interger to 目标进制 2|8|10|16
* @return 转换结果
*/
function convert(num,from,to){
var pattern=/^(2|8|10|16){1}$/;
if(!pattern.test(from)||!pattern.test(to)){
console.error('源进制from和目标进制to必须都为[2,8,10,16]其中的数字');
return;
}
//如果源进制为十进制
if(from==10){
return parseInt(num).toString(to);
}
//如果目标进制是十进制
if(to==10){
return parseInt(num,from);
}
//其他进制的转换
return parseInt(num,from).toString(to);
}

效果:
alert(convert(10,10,2)); // 十进制转成二进制,1010
alert(convert(11,10,16)); // 十进制转成十六进制,b
alert(convert(1111,2,16)); // 二进制转成十六进制,f
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JS进制转换