Konvertieren Sie einen String in C++ in eine binäre Sequenz

Jinku Hu 12 Oktober 2023
  1. Verwendung von die Klasse bitset<N> zum Zeichenketten in C++ in binäre Sequenzen umzuwandeln
  2. Verwenden Sie die benutzerdefinierte Funktion, um Zeichenketten in C++ in binäre Sequenzen umzuwandeln
Konvertieren Sie einen String in C++ in eine binäre Sequenz

Dieser Artikel zeigt verschiedene Methoden zum Konvertieren einer Zeichenkette in eine Binärsequenz in C++.

Verwendung von die Klasse bitset<N> zum Zeichenketten in C++ in binäre Sequenzen umzuwandeln

In Anbetracht der beliebigen Zeichenkettenfolge konvertieren wir jedes Zeichen in die entsprechende binäre Darstellung. Da die ASCII-Zeichen den Integralzahlen zugeordnet sind und der Wert char als int behandelt werden kann, verwenden wir die Klasse bitset<N>, um für jedes Zeichen eine feste Binärsequenz zu initialisieren.

Beachten Sie, dass einer der Konstruktoren des bitset<N> eine Möglichkeit bietet, die Binärsequenz aus den Zeichenwerten zu konstruieren, aber unabhängig davon, ob das char in den Integralwert umgewandelt worden wäre, selbst wenn das int erwartet wird. Die obige Lösung erfordert das Durchlaufen der gesamten Zeichenkette. Beachten Sie außerdem, dass die Anweisung if nur in der Schleife platziert wird, um das Format der gedruckten Ausgabe zu steuern.

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

Ausgabe:

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

Verwenden Sie die benutzerdefinierte Funktion, um Zeichenketten in C++ in binäre Sequenzen umzuwandeln

Alternativ können wir eine Funktion definieren, die einen int-Wert annimmt und die binäre Darstellung als std::string-Objekt zurückgibt. Diese Version erfordert auch eine Iteration, bis der angegebene Zeichenwert durch Teilen durch zwei auf 0 reduziert wird. Beachten Sie jedoch, dass die vorherige Lösung die Big-Endian-Darstellung ausgibt, wie wir sie normalerweise in geschriebenen Zahlen verwenden, und das folgende Beispiel gibt den Little-Endian aus, wenn die zugrunde liegende Maschine sie speichert.

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

Ausgabe:

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
Autor: 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

Verwandter Artikel - C++ String

Verwandter Artikel - C++ Binary