浅谈js的数字格式

除了正常我们常用的十进制(如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
原文地址:https://www.cnblogs.com/amiezhang/p/7940067.html