JavaScript的进制转换
先介绍两个API:
一、number 类型的 toString 方法
语法
参数
参数 | 描述 |
---|---|
radix | 可选/Number类型指定的基数(进制数),默认为10。 |
参数radix
支持 [2, 36] 之间的整数。例如:参数值为2,则表示二进制;为8,则表示八进制;为16,则表示十六进制。
如果省略参数radix
,则默认为10(十进制)。
返回值
toString()
函数的返回值为String类型,返回该数字指定进制形式的字符串。
二、string 转 number 的方法
语法
参数
参数 | 描述 |
---|---|
numString | String类型需要转换为整数的字符串。 |
radix | 可选/Number类型指定的进制基数。 |
参数radix
可以是一个介于 [2, 36] 之间的数值。例如:参数radix
为2,则将numString
视作二进制;参数radix
为8,则视作八进制;参数radix
为16,则视作十六进制。
如果没有提供radix
参数,则parseInt()
函数将会根据参数numString
的前缀来决定转换的进制基数。如果numString
的前缀是0x
,则转换为十六进制;如果前缀是0
,则转换为八进制;其他情况均转换为十进制。
返回值
parseInt()
函数的返回值为Number类型,返回转换后的整数。
如果指定的字符串中包含非数字字符,只要字符串开头的一部分符合整数的转换规则,则parseInt()
函数会将这一部分字符串转化为整数(从字符串开头,直到遇到非数字字符为止)。如果字符串以非数字字符开头,则返回NaN
。
上代码!
(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 !