Int를 C++에서 ASCII Char로 변환하는 방법

Jinku Hu 2023년10월12일
  1. Int to Char 할당을 사용하여 Int를 ASCII Char로 변환
  2. sprintf()함수를 사용하여 Int를 ASCII 문자로 변환
Int를 C++에서 ASCII Char로 변환하는 방법

이 기사에서는 int를 ASCII char C++로 변환하는 방법에 대한 몇 가지 방법을 설명합니다.

Int to Char 할당을 사용하여 Int를 ASCII Char로 변환

ASCII 문자 인코딩은 7 비트 형식으로 지정됩니다. 따라서 128 개의 고유 문자가 있으며 각각 0에서 127 사이의 해당 숫자 값에 매핑됩니다.

C 프로그래밍 언어는 char유형을 내부 숫자로 구현했기 때문에 int변수를 char유형 변수에 할당하고 해당 ASCII 문자로 처리 할 수 ​​있습니다. 예를 들어, int 벡터의 값을char 벡터로 직접 푸시 한 다음std::copy 메소드를 사용하여 출력하여 예상대로 ASCII 문자를 표시합니다.

char유형에 할당하는 것은 int값이 ASCII 코드 e.i에 해당하는 경우에만 작동합니다. 범위는 0-127입니다.

#include <array>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  std::copy(numbers.begin(), numbers.end(),
            std::ostream_iterator<int>(cout, "; "));

  chars.reserve(numbers.size());
  for (auto &number : numbers) {
    chars.push_back(number);
  }
  cout << endl;
  std::copy(chars.begin(), chars.end(),
            std::ostream_iterator<char>(cout, "; "));

  return EXIT_SUCCESS;
}

출력:

97; 98; 99; 100; 101; 102; 103;
a; b; c; d; e; f; g;

또는printf 함수를 사용하여 int 값을 ASCII 문자로 직접 출력 할 수 있습니다. printf는 다음 표에 표시된대로 해당 유형 인수에 대한 형식 지정자를 취합니다.

지정자 기술
% 리터럴 %문자를 인쇄합니다 (이 유형은 플래그, 너비, 정밀도, 길이 필드를 허용하지 않음).
d, i int는 부호있는 정수입니다. % d% i는 출력과 동일하지만 입력을 위해scanf와 함께 사용할 때는 다릅니다 (여기서% i를 사용하면 앞에 0x가 오면 16 진수로 해석되고 숫자가 있으면 8 진수로 해석됩니다. 앞에 0이옵니다.)
u 부호없는 정수를 인쇄합니다.
f, F 일반 (고정 소수점) 표기법에서는 double입니다. fF는 무한 숫자 또는 NaN에 대한 문자열이 인쇄되는 방식 만 다릅니다 (f의 경우 inf, infinity 및 nan,F의 경우 INF, INFINITY 및 NAN).
e, E 표준 형식의 double 값 (d.ddde ± dd). E 변환은 e가 아닌 문자 E를 사용하여 지수를 도입합니다.
g, G 정규 표기법이나 지수 표기법 중 두 배로, 그 크기에 더 적합한 표기법입니다. g는 소문자를 사용하고 G는 대문자를 사용합니다.
x, X 16 진수로 unsigned int. x는 소문자를 사용하고 X는 대문자를 사용합니다.
o 8 진수로 된 unsigned int.
s 널로 끝나는 문자열.
c char (문자).
p 구현 정의 형식의void *(void에 대한 포인터).
a, A 0x 또는 0X로 시작하는 16 진수 표기법의 double입니다. a는 소문자를 사용하고 A는 대문자를 사용합니다.
n 아무것도 인쇄하지 않지만 지금까지 성공적으로 기록 된 문자 수를 정수 포인터 매개 변수에 기록합니다.
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  for (const auto &number : numbers) {
    printf("%c; ", number);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

a; b; c; d; e; f; g;

sprintf()함수를 사용하여 Int를 ASCII 문자로 변환

sprintf 함수는int 값을 문자로 변환하는 또 다른 방법입니다. 변환 된 값을 유지하려면char 변수를 선언해야합니다. 이 변수는sprintf의 첫 번째 인수로 전달되고 세 번째 매개 변수는 처리 할 번호를 지정합니다. 마지막으로printf와 마찬가지로 형식 지정자 중 하나를 제공해야합니다. 이는 값이 변환 될 유형을 나타냅니다.

#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::to_chars;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};

  array<char, 5> char_arr{};
  for (auto &number : numbers) {
    sprintf(char_arr.data(), "%c", number);
    printf("%s; ", char_arr.data());
  }
  cout << endl;

  return EXIT_SUCCESS;
}
a; b; c; d; e; f; g;
작가: 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++ Integer