Convertir une chaîne en séquence binaire en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la classe bitset<N> pour convertir une chaîne en séquence binaire en C++
  2. Utiliser une fonction personnalisée pour convertir une chaîne en séquence binaire en C++
Convertir une chaîne en séquence binaire en C++

Cet article présente plusieurs méthodes de conversion d’une chaîne en séquence binaire en C++.

Utilisez la classe bitset<N> pour convertir une chaîne en séquence binaire en C++

Étant donné la séquence de chaînes arbitraire, nous convertirons chaque caractère en la représentation binaire correspondante. Puisque les caractères ASCII sont associés aux nombres entiers et que la valeur char peut être traitée comme int, nous utiliserons la classe bitset<N> pour initialiser une séquence binaire fixe à chaque caractère.

Notez que l’un des constructeurs du bitset<N> fournit un moyen de construire la séquence binaire à partir des valeurs de caractères, mais quel que soit le char aurait été converti en valeur intégrale même si int est attendu. La solution ci-dessus nécessite le parcours de la chaîne entière. Notez également que l’instruction if n’est placée qu’à l’intérieur de la boucle pour contrôler le format de la sortie imprimée.

#include <bitset>
#include <iostream>
#include <vector>

using std::bitset;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str = "Arbitrary string to be converted to binary sequence.";

  for (int i = 0; i < str.length(); ++i) {
    bitset<8> bs4(str[i]);
    cout << bs4 << " ";

    if (i % 6 == 0 && i != 0) cout << endl;
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

01000001 01110010 01100010 01101001 01110100 01110010 01100001
01110010 01111001 00100000 01110011 01110100 01110010
01101001 01101110 01100111 00100000 01110100 01101111
00100000 01100010 01100101 00100000 01100011 01101111
01101110 01110110 01100101 01110010 01110100 01100101
01100100 00100000 01110100 01101111 00100000 01100010
01101001 01101110 01100001 01110010 01111001 00100000
01110011 01100101 01110001 01110101 01100101 01101110
01100011 01100101 00101110

Utiliser une fonction personnalisée pour convertir une chaîne en séquence binaire en C++

Alternativement, nous pouvons définir une fonction qui prendra une valeur int et retournera la représentation binaire en tant qu’objet std::string. Cette version nécessite également une itération jusqu’à ce que la valeur de caractère donnée soit réduite à 0 en la divisant par deux. Attention cependant, la solution précédente produit la représentation big-endian comme nous l’utilisons généralement dans les nombres écrits, et l’exemple suivant produit le little-endian lorsque la machine sous-jacente les stocke.

#include <bitset>
#include <iostream>
#include <vector>

using std::bitset;
using std::cout;
using std::endl;
using std::string;

string toBinary(int n) {
  string r;
  while (n != 0) {
    r += (n % 2 == 0 ? "0" : "1");
    n /= 2;
  }
  return r;
}

int main() {
  string str = "Arbitrary string to be converted to binary sequence.";

  for (int i = 0; i < str.length(); ++i) {
    cout << toBinary(str[i]) << " ";

    if (i % 6 == 0 && i != 0) cout << endl;
  }

  return EXIT_SUCCESS;
}

Production:

1000001 0100111 0100011 1001011 0010111 0100111 1000011
0100111 1001111 000001 1100111 0010111 0100111
1001011 0111011 1110011 000001 0010111 1111011
000001 0100011 1010011 000001 1100011 1111011
0111011 0110111 1010011 0100111 0010111 1010011
0010011 000001 0010111 1111011 000001 0100011
1001011 0111011 1000011 0100111 1001111 000001
1100111 1010011 1000111 1010111 1010011 0111011
1100011 1010011 011101
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ String

Article connexe - C++ Binary