나는 작은 문자와 숫자만을 포함하는 5 char 문자열 ad3s5
, sdgsd
등이 있습니다.'변환'5자를 int로
그래서 각 문자에는 5 개의 문자와 36 개의 가능한 값이 있습니다. 이는 5^36
고유 번호가 있음을 나타냅니다.
5 문자를 0-5^36
범위의 고유 한 숫자로 변환하는 방법은 무엇입니까? 예를 들어
unsigned long val = std::strtoul(str, nullptr, 36);
:
나는 작은 문자와 숫자만을 포함하는 5 char 문자열 ad3s5
, sdgsd
등이 있습니다.'변환'5자를 int로
그래서 각 문자에는 5 개의 문자와 36 개의 가능한 값이 있습니다. 이는 5^36
고유 번호가 있음을 나타냅니다.
5 문자를 0-5^36
범위의 고유 한 숫자로 변환하는 방법은 무엇입니까? 예를 들어
unsigned long val = std::strtoul(str, nullptr, 36);
:
실행을 참조하십시오 :
#include <iostream>
#include <cstdlib>
int main()
{
const char* str = "zzzzz";
unsigned long val = std::strtoul(str, nullptr, 36);
std::cout << val;
}
출력 60466175
은 36 -1입니다.
당신은 표준 라이브러리에서 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
기본적으로 C++에서 Base36을 구문 분석하려고합니다. –
확실하지는 않지만 올바른 것으로 보입니다 –
https://en.wikipedia.org/wiki/Base_36을 참조하십시오. – metal