欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现进制转换

程序员文章站 2022-06-08 20:48:02
js实现进制转换:js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用对象.tostring()即可实现: //10进制转为16进制 (1...

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