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입니다. f 와F 는 무한 숫자 또는 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;
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