Converter string em sequência binária em C++

Jinku Hu 12 outubro 2023
  1. Use a classe bitset<N> para converter string em sequência binária em C++
  2. Use a função personalizada para converter string em sequência binária em C++
Converter string em sequência binária em C++

Este artigo demonstrará vários métodos de como converter uma string em uma seqüência binária em C++.

Use a classe bitset<N> para converter string em sequência binária em C++

Dada a sequência de string arbitrária, converteremos cada caractere na representação binária correspondente. Como os caracteres ASCII estão associados aos números inteiros e o valor char pode ser tratado como o int, utilizaremos a classe bitset<N> para inicializar uma seqüência binária fixa de cada caractere.

Observe que um dos construtores do bitset<N> fornece uma maneira de construir a seqüência binária a partir dos valores dos caracteres, mas, independentemente, o char teria sido convertido para o valor integral mesmo se int fosse esperado. A solução acima requer a travessia de toda a string. Além disso, observe que a instrução if é colocada apenas dentro do loop para controlar o formato da saída impressa.

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

Resultado:

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

Use a função personalizada para converter string em sequência binária em C++

Alternativamente, podemos definir uma função que terá um valor int e retornará a representação binária como objeto std::string. Essa versão também requer iteração até que o valor do caractere fornecido seja reduzido a 0, dividindo-o por dois. Lembre-se, porém, de que a solução anterior gera a representação big-endian como geralmente usamos em números escritos, e o exemplo a seguir gera a saída little-endian conforme a máquina subjacente os armazena.

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

Resultado:

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

Artigo relacionado - C++ String

Artigo relacionado - C++ Binary