C++에서 문자열을 이진 시퀀스로 변환

Jinku Hu 2023년10월12일
  1. bitset<N>클래스를 사용하여 C++에서 문자열을 이진 시퀀스로 변환
  2. 사용자 지정 함수를 사용하여 C++에서 문자열을 이진 시퀀스로 변환
C++에서 문자열을 이진 시퀀스로 변환

이 기사에서는 C++에서 문자열을 이진 시퀀스로 변환하는 방법에 대한 여러 방법을 보여줍니다.

bitset<N>클래스를 사용하여 C++에서 문자열을 이진 시퀀스로 변환

임의의 문자열 시퀀스가 ​​주어지면 각 문자를 해당 이진 표현으로 변환합니다. ASCII 문자는 정수와 연관되고char값은int로 처리 될 수 있으므로bitset<N>클래스를 사용하여 각 문자의 고정 이진 시퀀스를 초기화합니다.

bitset<N>의 생성자 중 하나는 문자 값에서 이진 시퀀스를 구성하는 방법을 제공하지만int가 예상되는 경우에도char가 정수 값으로 캐스트되었을 것입니다. 위의 솔루션에는 전체 문자열의 순회가 필요합니다. 또한if문은 인쇄 된 출력의 형식을 제어하기 위해 루프 내부에만 배치됩니다.

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

출력:

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

사용자 지정 함수를 사용하여 C++에서 문자열을 이진 시퀀스로 변환

또는int값을 취하고 이진 표현을std::string객체로 반환하는 함수를 정의 할 수 있습니다. 이 버전은 또한 주어진 문자 값을 2로 나누어 0으로 줄일 때까지 반복이 필요합니다. 하지만 이전 솔루션은 우리가 일반적으로 쓰여진 숫자에서 사용하는 것처럼 빅 엔디안 표현을 출력하고 다음 예제는 기본 머신이 그것들을 저장할 때 리틀 엔디안을 출력합니다.

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

출력:

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
작가: 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

관련 문장 - C++ String

관련 문장 - C++ Binary