JavaScript的进制转换

先介绍两个API:

一、number 类型的 toString 方法

语法

numberObject.toString( [ radix ] )

参数

参数描述
radix 可选/Number类型指定的基数(进制数),默认为10。

参数radix支持 [2, 36] 之间的整数。例如:参数值为2,则表示二进制;为8,则表示八进制;为16,则表示十六进制。
如果省略参数radix,则默认为10(十进制)。

返回值

toString()函数的返回值为String类型,返回该数字指定进制形式的字符串。

 

二、string 转 number 的方法

语法

parseInt( numString [, radix ] )

参数

参数描述
numString String类型需要转换为整数的字符串。
radix 可选/Number类型指定的进制基数。

参数radix可以是一个介于 [2, 36] 之间的数值。例如:参数radix为2,则将numString视作二进制;参数radix为8,则视作八进制;参数radix为16,则视作十六进制。

 如果没有提供radix参数,则parseInt()函数将会根据参数numString的前缀来决定转换的进制基数。如果numString的前缀是0x,则转换为十六进制;如果前缀是0,则转换为八进制;其他情况均转换为十进制。

返回值

parseInt()函数的返回值为Number类型,返回转换后的整数。

如果指定的字符串中包含非数字字符,只要字符串开头的一部分符合整数的转换规则,则parseInt()函数会将这一部分字符串转化为整数(从字符串开头,直到遇到非数字字符为止)。如果字符串以非数字字符开头,则返回NaN

 

上代码!

数字转2进制

(100).toString(2)         // "1100100"

数字转8进制

(100).toString(8)         // "144"

数字转16进制

(100).toString(16)         // "64"

16进制转10进制

parseInt(0x64)            //  100 
parseInt('0x64')          //  100
parseInt('0x64',16)       //  100    第二参数写了更好,以免迷糊
​
parseInt('ff')            //  NaN
parseInt('ff',16)         //  255   这里没有0x打头,必须要注明要转的基数

8进制转10进制

parseInt(0100);           //  64    先转成字符串,再以8进制解析
parseInt("0100",8);       //  64    正确写法,无歧义  !!!
​
parseInt("0100");         //  100   官方表示不确定:但是测试结果,谷歌浏览器当成10进制输入。所以不建议这样写

2进制转10进制

parseInt("11",2);        //返回 3 

 

补充

ES6支持二进制和八进制的字面量

  1、在数字前面添加 0o 或者 0O 即可将其转换为八进制

  2、在数字前面添加 0b 或者 0B 即可将其转换为二进制

let oValue = 0o10;
console.log(oValue);      //8

let bValue = 0b10;
console.log(bValue);      //2

 

Thanks for watching !

posted @ 2019-09-17 09:56  牛龙飞  阅读(2661)  评论(0编辑  收藏  举报