如何将二进制string转换为十进制?

我想将二进制string转换为数字例如

var binary = "1101000" // code for 104 var digit = binary.toString(10); // Convert String or Digit (But it does not work !) console.log(digit); 

这怎么可能? 谢谢

parseInt函数将string转换为数字,第二个参数指定string表示forms的基数:

 var digit = parseInt(binary, 2); 

看到它的行动

使用parseIntradix参数:

 var binary = "1101000"; var digit = parseInt(binary, 2); console.log(digit); 

parseInt()和radix是最好的解决scheme(正如许多人所说的):

但是如果你想实现它没有parseInt,这是一个实现:

  function bin2dec(num){ return num.split('').reverse().reduce(function(x, y, i){ return (y === '1') ? x + Math.pow(2, i) : x; }, 0); } 

ES6支持整数的二进制数字文字 ,所以如果二进制string是不可变的,就像问题中的示例代码一样,只要input前缀0b0B

 var binary = 0b1101000; // code for 104 console.log(binary); // prints 104 

另一个实现functionJS的实现可能是

 var bin2int = s => Array.prototype.reduce.call(s, (p,c) => p*2 + +c) console.log(bin2int("101010"));