Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 정수를 16진수 문자열로 변환하는 방법

이 글에서는 C++에서 정수를 16진수 문자열로 변환하는 방법을 알아봅니다. 수학적인 계산 과정을 직접 구현할 수도 있지만, 여기서는 훨씬 간단한 방법을 사용해 문제를 해결해 보겠습니다.

핵심 아이디어: %X 형식 지정자

C/C++에는 %X라는 형식 지정자(format specifier)가 있습니다. 이 지정자는 변수의 값을 16진수 형태로 출력해 주며, sprintf() 함수와 함께 사용하면 숫자를 손쉽게 문자열로 변환할 수 있습니다.

입력: 정수 255
출력: FF

알고리즘

1단계: 사용자로부터 숫자를 입력받는다.
2단계: %X 형식 지정자를 사용해 숫자를 16진수 문자열로 변환한다.
3단계: 결과를 출력한다.
4단계: 종료한다.

예제 코드

#include<iostream>
using namespace std;
main() {
    int n;
    char hex_string[20];
    cout << "Enter a number: ";
    cin >> n;
    sprintf(hex_string, "%X", n); // 숫자를 16진수로 변환
    cout << hex_string;
}

실행 결과

Enter a number: 250
FA

코드 설명

위 코드의 동작 원리를 단계별로 살펴보면 다음과 같습니다.

1. 변수 선언: 정수형 변수 n과 변환 결과를 저장할 문자 배열 hex_string(크기 20)을 선언합니다.

2. 입력 받기: cin을 통해 사용자로부터 정수를 입력받습니다.

3. 변환: sprintf(hex_string, "%X", n) 함수가 정수 n을 16진수 대문자 형식으로 변환하여 hex_string에 저장합니다. 소문자로 출력하고 싶다면 %x를 사용하면 됩니다.

4. 출력: 변환된 문자열을 화면에 출력합니다.

참고 사항

현대 C++에서는 sprintf() 대신 std::stringstream이나 C++11부터 도입된 std::to_string과 조합, 또는 std::format(C++20)을 사용하는 것이 더 안전하고 권장됩니다. 예를 들어 다음과 같이 작성할 수 있습니다.

#include<iostream>
#include<sstream>
using namespace std;
int main() {
    int n = 250;
    stringstream ss;
    ss << hex << uppercase << n;
    string hex_string = ss.str();
    cout << hex_string; // FA 출력
}

이처럼 %X 형식 지정자를 활용하면 복잡한 나눗셈 연산 없이도 한 줄의 코드로 정수를 16진수 문자열로 간편하게 변환할 수 있습니다.