我有一个5字符串ad3s5
,sdgsd
等,只包含小写字母和数字。
因此,每个char我们有5个字符和36个可能的值。这意味着有5^36
个唯一数字能够代表这一点。
如何将5个字符转换为0-5^36
范围内的唯一数字?
答案 0 :(得分:3)
您可以使用std::strtoul
解码基数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 5 -1。
答案 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';
}
看到它运行here at ideone.com