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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章