Vyhledávání na webu

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);
  }

Související články