javascript进制处理分字面量与字符串转换:字面量用0b/0o/0x前缀直接声明,字符串需parseint()或number()解析;数值转进制用tostring(基数);运算时自动转十进制。

JavaScript 中处理不同进制数字的解析,核心在于明确字面量表示法与转换函数的分工:字面量(如 0b101、0o77、0xFF)用于直接声明,而字符串形式的进制数(如 "101"、"77"、"FF")必须借助 parseInt() 或 Number() 才能正确解析为十进制数值。
字面量写法要规范,避免旧式八进制陷阱
ES6 起统一支持标准前缀:
-
二进制:用
0b或0B,例如0b1010→ 十进制 10 -
八进制:用
0o或0O,例如0o77→ 十进制 63 -
十六进制:用
0x或0X,例如0xFF→ 十进制 255 - 旧写法
0123(仅数字前导零)在严格模式下会报错,非严格模式下可能被误判为八进制(若含 8 或 9 则退化为十进制),应主动弃用
字符串转数值:parseInt 是主力,Number 可辅助
当进制数以字符串形式存在(比如用户输入、接口返回),需指定基数(radix):
-
parseInt("1010", 2)→ 10(二进制字符串转十进制) -
parseInt("77", 8)→ 63(八进制字符串转十进制) -
parseInt("ff", 16)→ 255(十六进制字符串不区分大小写) -
Number("0b1010")→ 10,Number("0o77")→ 63,Number("0xFF")→ 255
注意:Number()支持带进制前缀的字符串,但不支持无前缀+基数(如Number("1010", 2)无效,第二参数被忽略)
十进制转其他进制:toString(基数) 最常用
数值对象调用 toString() 方法可输出对应进制的字符串:
-
(255).toString(2)→"11111111" -
(63).toString(8)→"77" -
(10).toString(16)→"a"(小写,如需大写可用.toUpperCase()) - 基数范围是 2–36;超出或非整数则返回
NaN
运算与隐式转换:内部自动归一为十进制
所有进制字面量参与运算时,JavaScript 内部一律先转为十进制再计算:
-
0b11 + 0o10→3 + 8→11 -
0xFF === 255→true - 混合类型运算(如
0x10 + "5")触发字符串拼接,结果为"165"(因0x10先转成字符串"16")
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











