JavaScript中数字与字符串多进制互转

378 阅读2分钟

进制表示

  • 0b开头表示二进制
  • 0o开头表示八进制
  • 0x开头表示十六进制
var a = 0b11111111 // 255
var b = 0o377 // 255
var c = 0xFF // 255

parseInt字符转换为十进制

解析一个字符串,并返回一个整数,其中第二个参数是基数,也就是对应的进制数,取值在2 ~ 36之间。 当然我们最常用的也是216。如果第二个参数为0,直接当做10进制转换。

可以理解为把对应字符串当做什么进制来解析,然后返回他对应的十进制结果。

注意:parseInt方法的结果永远是十进制结果。

var a = "255"
parseInt(a) // 255
parseInt(a, 0) // 255
parseInt(a, 10) // 255

var b = "111"
parseInt(b) // 111
// 把字符串b当做二进制解析
parseInt(b, 2) // 7

var c = "377"
parseInt(b) // 377
// 把字符串c当做八进制解析
parseInt(c, 8) // 255

var d = "FF"
parseInt(d) // NaN
parseInt(d, 2) // NaN
// 把字符串c当做十六进制处理
parseInt(d, 16) // 255

toString十进制转为其他进制

这个方法任意数字类型转换,结果为对应进制的字符串格式

var a = 255
a.toString() // "255"
a.toString(10) // "255"

a.toString(2) // "11111111"
a.toString(8) // "377"
a.toString(16) // "ff"

不同进制互转

如果你获取到一个字符串,你知道这代表的是某个进制数字,你想转为其他进制,那么需要先parseInttoString

下面是将八进制字符串377转为十六进制字符串ff过程。

// 假设我们得到一个字符串"377”,而且你得到确认这其实是表示一个八进制数字
var a = "377"
var b = parseInt(a, 8) // 255
var c = b.toString(16) // "ff"