Study/Programming Language
[C++] N진법 <-> 10진법 변환하는 방법
찬 주
2025. 4. 2. 10:14
1. N진법 -> 10진법
C++에서는 stoi() 라이브러리를 사용하면 N진법을 쉽게 10진법으로 바꿀 수 있다. stoi()의 기본 형태는 다음과 같다.
int stoi(const string& str, size_t* idx = 0, int base = 10);
- str: 변환할 문자열
- idx: (선택) 변환이 끝난 위치를 저장할 포인터
- base: (선택) 진법. 기본값은 10진수
여기서 base 값에 따라 진법 변환이 가능하다. 이때 base는 36까지만 가능하다!
/* 2진수 변환 */
string s = "1011";
int n = stoi(s, nullptr, 2); // → 11
/* 8진수 변환 */
string s = "17";
int n = stoi(s, nullptr, 8); // → 15
/* 16진수 변환 */
string s = "1A";
int n = stoi(s, nullptr, 16); // → 26
2. 10진법 -> N진법
10진법을 N진법으로 바꾸는 라이브러리는 존재하지 않기 때문에 직접 함수를 구현해서 사용해야 한다.
string toBase(int num, int base) {
if (num == 0) return "0";
string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string result;
while (num > 0) {
result = digits[num % base] + result;
num /= base;
}
return result;
}