总结进制转换的各种情况。注意,字符串类型和数字类型的来回切换。
除了常用的十进制外,js可以直接表示2、8、16进制。
TL;DR
console.log( 0b10===2, 02===2, 0x2===2)
=> 均为true- 17的二进制是啥
=>(17).toString(2),"10001" - 二进制
"10001"对应的十进制是啥
=>parseInt('10001',2),17 - 二进制
10001对应的八进制是啥
=>parseInt("10001",2).toString(8),"21" - 都知道的话,就不用往下看了
进制的数字格式
二进制 - 0b 开头
var x = 0b10
// 2
console.log(x)
八进制 - 0 开头
var x = 010
// 8
console.log(x)
十进制 - 没啥开头
var x = 10
// 10
console.log(x)
十六进制 - 0x 开头
var x = 0x10
// 16
console.log(x)
数字转换成任意进制的字符串:Number.prototype.toString
数字类型的可以转化成任意进制的字符串。
numObj.toString([radix]),radix默认值为 10,范围在2-36。
// xTen也可以是0b10001
var xTen = 17
// 转换成2进制 "10001"
var xTwo = (xTen).toString(2)
// 转换成8进制 "21"
var xEight = (xTen).toString(8)
// 转换成16进制 "11"
var xSixteen = (xTen).toString(16)
!!!注意,调用toString是数字类型,返回的是字符串类型
任意进制的字符串转化成相应的数字: parseInt(String,radix)
任意进制的字符串可以显示成正常的数字,比如二进制"10001"表示的实际数字。
parseInt(string, radix),radix范围在2-36。必须传入。
// xTen也可以是0b10001
var xTen = 17
// 转换成2进制 "10001"
var xTwo = (xTen).toString(2)
// 17,将二进制的字符串,正常表示出来,后面一个参数传入2
var xTenFormat = parseInt(xTwo,2)
!!!注意,parseInt是全局函数,第一个参数是字符串,第二个参数是前面的字符串是几进制的。