最常用方法是parseint("1010", 2)→10;number("0b1010")→10需带前缀;手动实现用dec=dec*2+bit逐位计算。

直接用 parseInt(),传入二进制字符串和基数 2 即可。
使用 parseInt() 转换(最常用)
parseInt() 是标准且简洁的方式,适用于以 "0b" 开头或纯数字组成的二进制字符串:
-
parseInt("1010", 2)→ 返回 10 -
parseInt("0b1111", 2)→ 返回 15(前缀会被自动忽略) -
parseInt("1001101", 2)→ 返回 77
注意:字符串中只能包含 0、1 和可选的 "0b" 前缀,否则会截断到第一个非法字符为止(例如 parseInt("101a0", 2) 得到 5)。
用 Number() 配合 0b 前缀(ES6+)
如果字符串已带 "0b" 前缀,可直接用 Number():
-
Number("0b1010")→ 10 -
Number("0b11111111")→ 255
不带前缀时 Number("1010") 会被当作十进制,结果是 1010,所以必须确保有 "0b" 前缀才安全。
手动实现(理解原理用)
从高位到低位遍历,逐位累加:result = result * 2 + currentBit:
function binToDec(binStr) {
let dec = 0;
for (let i = 0; i <p>例如 <code>binToDec("1101")</code> 计算过程:
<code>0→1→3→6→13</code>,结果为 <strong>13</strong>。</p><h3>处理异常与校验</h3><p>生产环境建议先校验输入是否合法:</p>
- 用正则
/^[01]+$/检查纯二进制字符串 - 或用
/^0b[01]+$/i检查带前缀格式 - 校验失败时返回
NaN或抛错,避免静默错误
例如:!/^[01]+$/.test("102") ? NaN : parseInt("102", 2) 可防止误转。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











