'Convert' 5 个字符到整数

'Convert' 5 chars to int

本文关键字:整数 字符 Convert      更新时间:2023-10-16

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

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

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

您可以使用std::strtoul像这样解码 base 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为 365-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';
}

在 ideone.com 看到它在这里运行