2014-02-10 1 views
1

나는 작은 문자와 숫자만을 포함하는 5 char 문자열 ad3s5, sdgsd 등이 있습니다.'변환'5자를 int로

그래서 각 문자에는 5 개의 문자와 36 개의 가능한 값이 있습니다. 이는 5^36 고유 번호가 있음을 나타냅니다.

5 문자를 0-5^36 범위의 고유 한 숫자로 변환하는 방법은 무엇입니까? 예를 들어

unsigned long val = std::strtoul(str, nullptr, 36); 

:

+1

기본적으로 C++에서 Base36을 구문 분석하려고합니다. –

+0

확실하지는 않지만 올바른 것으로 보입니다 –

+2

https://en.wikipedia.org/wiki/Base_36을 참조하십시오. – metal

답변

3

실행을 참조하십시오 :

#include <iostream> 
#include <cstdlib> 

int main() 
{ 
    const char* str = "zzzzz"; 
    unsigned long val = std::strtoul(str, nullptr, 36); 
    std::cout << val; 
} 

출력 60466175은 36 -1입니다.

0

당신은 표준 라이브러리에서 std::strtol를 사용하여 지정할 수 있습니다 base = 36

#include <cstdlib> 
#include <iostream> 

int main() 
{ 
    std::cout << std::strtol("ad3s5", NULL, 36) << '\n'; 
    std::cout << std::strtol("sdgsd", NULL, 36) << '\n'; 
} 

당신은 다음과 같은 기본 (36)를 디코딩 std::strtoul를 사용할 수는 here at ideone.com