Convertir cadena en secuencia binaria en C++

Jinku Hu 12 octubre 2023
  1. Utilice la clase bitset<N> para convertir cadenas en secuencias binarias en C++
  2. Utilice la función personalizada para convertir cadenas en secuencias binarias en C++
Convertir cadena en secuencia binaria en C++

Este artículo demostrará varios métodos de cómo convertir una cadena en una secuencia binaria en C++.

Utilice la clase bitset<N> para convertir cadenas en secuencias binarias en C++

Dada la secuencia de cadenas arbitraria, convertiremos cada carácter en la representación binaria correspondiente. Dado que los caracteres ASCII están asociados con los números enteros y el valor char puede tratarse como el int, utilizaremos la clase bitset<N> para inicializar una secuencia binaria fija de cada carácter.

Tenga en cuenta que uno de los constructores del bitset<N> proporciona una forma de construir la secuencia binaria a partir de los valores de los caracteres, pero independientemente de que el char se haya convertido en el valor integral incluso si se espera el int. La solución anterior requiere el recorrido de toda la cadena. Además, observe que, la instrucción if solo se coloca dentro del bucle para controlar el formato de la salida impresa.

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

Producción :

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

Utilice la función personalizada para convertir cadenas en secuencias binarias en C++

Alternativamente, podemos definir una función que tomará un valor int y devolverá la representación binaria como objeto std::string. Esta versión también requiere iteración hasta que el valor del carácter dado se reduce a 0 dividiéndolo por dos. Sin embargo, tenga en cuenta que la solución anterior genera la representación big-endian como generalmente usamos en números escritos, y el siguiente ejemplo genera el little-endian cuando la máquina subyacente los almacena.

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

Producción :

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

Artículo relacionado - C++ String

Artículo relacionado - C++ Binary