当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS实现进制转换

JS实现进制转换

2019年04月05日  | 移动技术网IT编程  | 我要评论

js实现进制转换: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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网