161 votes

Comment convertir une chaîne binaire en décimal?

Je veux convertir une chaîne binaire en chiffre E.g

var binaire = "1101000" // code pour 104
var chiffre = binaire.toString(10); // Convertir String en chiffre (Mais cela ne fonctionne pas !)
console.log(chiffre);

Comment est-ce possible? Merci

307voto

Jon Points 194296

La fonction parseInt convertit les chaînes de caractères en nombres, et prend un deuxième argument spécifiant la base dans laquelle se trouve la représentation de la chaîne :

var digit = parseInt(binary, 2);

Voir le résultat en action.

1 votes

Est-ce que cela est toujours pertinent? parseInt(101, 2) retourne 5.

20 votes

@srph: Ce n'est pas surprenant, 101 en base 2 est 5 en base 10.

4 votes

Ah, je vois. J'ai dû mal comprendre ce que le parseInt. Je pensais que cela convertirait la chaîne de base 10 -> quoi que ce soit (pensant que parseInt('5612', 2) renverrait sa forme binaire ;).

31voto

GOTO 0 Points 3049

ES6 prend en charge littéraux numériques binaires pour les entiers, donc si la chaîne binaire est immuable, comme dans le code d'exemple de la question, on pourrait simplement la taper telle quelle avec le préfixe 0b ou 0B :

var binaire = 0b1101000; // code pour 104
console.log(binaire); // affiche 104

28voto

Md Shahriar Points 324
var num = 10;

alert("Binaire " + num.toString(2));   // 1010
alert("Octal " + num.toString(8));    // 12
alert("Hexadécimal " + num.toString(16));     // a

alert("Binaire en Décimal " + parseInt("1010", 2));  // 10
alert("Octal en Décimal " + parseInt("12", 8));     // 10
alert("Hexadécimal en Décimal " + parseInt("a", 16));       // 10

15voto

phihag Points 89765

Utilisez le paramètre radix de parseInt :

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

14voto

Salvador Dali Points 11667

parseInt() avec radix est une meilleure solution (comme l'ont dit beaucoup) :

Mais si vous voulez l'implémenter sans parseInt, voici une implémentation :

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

1 votes

Il y a maintenant une fonction reduceRight(). Vous n'avez peut-être plus besoin de reverse().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X