parseInt("1010", 2)返回10,需指定基数2,支持空格和负号,遇非法字符停止解析,不识别0b前缀;Number("0b1010")则原生支持0b前缀。

parseInt 可以把二进制字符串(如 "1010")转成十进制数字,关键是要传入第二个参数 进制基数(radix),设为 2。
基本用法:传入 radix = 2
语法:parseInt(string, 2)。只有当字符串只包含 0 和 1(可选开头空格或正负号)时,才能正确解析为二进制。
-
parseInt("1010", 2)→ 10 -
parseInt(" 1101 ", 2)→ 13(自动忽略首尾空格) -
parseInt("-101", 2)→ -5(支持负号) -
parseInt("102", 2)→ 1(遇到非法字符'2'就停止,只解析前面的"10")
注意前导零和无效字符
二进制中不允许出现 2–9 或字母(除非是 0b 前缀,但 parseInt 不识别 0b 前缀):
-
parseInt("0b1010", 2)→ 0(因为'b'不是合法二进制字符,从开头就失败) - 想安全解析带
0b的字符串,先用.replace(/^0b/i, '')去掉前缀再调用parseInt(..., 2)
对比 Number() 和 parseInt 的区别
如果字符串严格符合二进制格式,也可用 Number() 配合 0b 字面量语法(ES6+),但这是不同机制:
立即学习“Java免费学习笔记(深入)”;
-
Number("0b1010")→ 10(原生支持0b前缀) -
parseInt("0b1010", 2)→ 0(如前所述,不认0b) - 所以:要兼容旧环境或手动控制解析起点,用
parseInt(str, 2);要简洁且确保输入规范,可用Number(str)(它会自动识别0b、0x、0o)


















