javascript - Jak převést binární řetězec na desítkové číslo?
Chci převést binární řetězec na číslo, např.
var binary = "1101000" // code for 104
var digit = binary.toString(10); // Convert String or Digit (But it does not work !)
console.log(digit);Jak je to možné? Děkuji
Odpověď č. 1
Funkce parseInt převádí řetězce na čísla a bere druhý argument určující základ, ve kterém je řetězcová reprezentace:
var digit = parseInt(binary, 2);
Uvidíte to v akci.
Odpověď č. 2
ES6 podporuje binární číselné literály pro celé čísla, takže pokud je binární řetězec neměnný, jako v ukázkovém kódu v otázce, lze jej prostě zadat tak, jak je, s prefixem 0b nebo 0B:
var binary = 0b1101000; // code for 104
console.log(binary); // prints 104
Odpověď č. 3
var num = 10;
alert("Binary " + num.toString(2)); // 1010
alert("Octal " + num.toString(8)); // 12
alert("Hex " + num.toString(16)); // a
alert("Binary to Decimal " + parseInt("1010", 2)); // 10
alert("Octal to Decimal " + parseInt("12", 8)); // 10
alert("Hex to Decimal " + parseInt("a", 16)); // 10
Odpověď č. 4
Použijte parametr radix u parseInt:
var binary = "1101000";
var digit = parseInt(binary, 2);
console.log(digit);
Odpověď č. 5
parseInt() s radixem je nejlepší řešení (jak bylo řečeno mnoha lidmi):
Ale pokud to chcete implementovat bez parseInt, zde je implementace:
function bin2dec(num){
return num.split('').reverse().reduce(function(x, y, i){
return (y === '1') ? x + Math.pow(2, i) : x;
}, 0);
}
