如何将二进制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);
看到它的行动 。
使用parseInt
的radix参数:
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前缀0b
或0B
:
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"));