come convertire la stringa binaria in decimale?

Voglio convertire la stringa binaria in cifre Eg

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

Come è ansible? Grazie

La funzione parseInt converte stringhe in numeri e prende un secondo argomento specificando la base in cui è rappresentata la stringa:

 var digit = parseInt(binary, 2); 

Guardalo in azione .

Usa il parametro radix di parseInt :

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

parseInt() con radix è la soluzione migliore (come è stato detto da molti):

Ma se vuoi implementarlo senza parseInt, ecco un’implementazione:

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

ES6 supporta letterali numerici binari per gli interi, quindi se la stringa binaria è immutabile, come nel codice di esempio nella domanda, si può semplicemente inserirla come è con il prefisso 0b o 0B :

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

Potrebbe esserci un’altra implementazione solo per la pratica funzionale del JS

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

Ho raccolto tutto ciò che altri hanno suggerito e creato seguendo la funzione che ha 3 argomenti, il numero e la base da cui è partito quel numero e la base su cui quel numero sarà inserito:

 changeBase(1101000, 2, 10) => 104 

Esegui snippet di codice per provare tu stesso:

 function changeBase(number, fromBase, toBase) { if (fromBase == 10) return (parseInt(number)).toString(toBase) else if (toBase == 10) return parseInt(number, fromBase); else{ var numberInDecimal = parseInt(number, fromBase); return (parseInt(numberInDecimal)).toString(toBase); } } $("#btnConvert").click(function(){ var number = $("#txtNumber").val(), fromBase = $("#txtFromBase").val(), toBase = $("#txtToBase").val(); $("#lblResult").text(changeBase(number, fromBase, toBase)); }); 
 #lblResult{ padding: 20px; } 
       

Hint:
Try 110, 2, 10 and it will return 6; (110)2 = 6
or 2d, 16, 10 => 45 meaning: (2d)16 = 45
or 45, 10, 16 => 2d meaning: 45 = (2d)16
or 2d, 2, 16 => 2d meaning: (101101)2 = (2d)16