相关API介绍
numObj.toString([radix])
方法返回指定 Number 对象的字符串表示形式。
作用:将10进制的数字转为任意进制(默认是转10进制,对就是默认不转)
参数:
- radix:
指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10。
parseInt(string, radix)
解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
作用:将任意进制转为10进制
参数
-
string:
要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略 -
radix 可选:
从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!- 如果输入的 string以 "0x"或 “0x”(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
- 如果输入的 string以 “0”(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用parseInt 时,一定要指定一个 radix。
- 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
0b11 0o11 0x11 分别进行将2,8,16进制的数转为10进制
实现
只要不是10进制的数字先使用parseInt转为10进制,在使用Number.toString转为其他进制
例子
// 2to8
let two = 111111 // 假设为二进制
console.log(parseInt(two, 2)) // 2进制先转10进制
console.log(parseInt(two, 2).toString(8)) // 10进制转8进制