'转换'5个字符到int

时间:2014-02-10 20:00:45

标签: c++

我有一个5字符串ad3s5sdgsd等,只包含小写字母和数字。

因此,每个char我们有5个字符和36个可能的值。这意味着有5^36个唯一数字能够代表这一点。

如何将5个字符转换为0-5^36范围内的唯一数字?

2 个答案:

答案 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