除了正常我們常用的十進制(如5,8,12.123等),js還可以直接表示2、8、16進制
1.二進制
二進制是以0b開頭
0b10; //2
2.八進制
八進制是以0開頭
010; //8
3.十六進制
十六進制是以0x開頭
0x10; //16
可以看出js雖然是支持2、8、16進制,但是它最后得出結果的時候仍然把數字轉為10進制,如果我們需要結果是2、8、16進制形式的話我們有一個方法:
toString(radix) 把10進制數字解析成幾進制
var x = 255; x.toString('16'); //"ff"
4.解析成其他進制
上面都是10進制到其他進制的轉化(實際大小不會變化),但如果想把數字解析為其他進制(把數字看成不同進制,實際大小會變化),如想把12解析成4進制,可以寫成parseInt(12,4) ; //6 = 1*4+2
parseInt
parseInt(num,radix) 其中36>radix>2,radix是用幾進制來解析這個數字(parseFloat沒有這個功能)
//80用16進制來解析當然就是128了 parseInt(80,16); //128 = 8*16 //改變解析進制數,只能選比該數字所有位都大的數 //如80,只能選9以上,不然會解析不了而返回NaN parseInt(80,8); //NaN //注意大於10進制的進制數一定要用字符串來表示,不然會報錯 //如果用0x15這樣形式,js會先將其轉化為21,最后結果就不會是預期的結果了 parseInt('ag',18); //196 = 10*18+16