字符串到唯一小数

时间:2016-03-14 10:23:59

标签: string unicode decimal unique crc32

我的字符串格式为(0-9)(A-Z)(A-Z)(A-Z)(A-Z),例如0AAAA或7ZHSK等

我想要一种独立于平台的方式将其转换为唯一的小数。

我已经尝试过非常接近我想要的crc32,并且测试过所有4,569,760种可能的组合都没有碰撞。

我的问题是crc32在32位机器和64位机器上输出不同的结果,

有什么类似的工作吗?我需要使用多种语言的标准函数,因此不需要自定义函数。

编辑: 以下是在这两个位置运行的代码示例:

FrameworkElement

http://www.writephponline.com

echo crc32('1AAAA');

http://phptester.net

output = -534072890

1 个答案:

答案 0 :(得分:3)

为什么不使用场所值语义?结果只需要23位,因此它非常适合标准积分类型:

#include <cinttypes>
#include <string>

std::uint32_t to_int(std::string const & s)
{
    return
       (s[4] - 'A') * 1 +
       (s[3] - 'A') * 26 +
       (s[2] - 'A') * 26*26 +
       (s[1] - 'A') * 26*26*26 +
       (s[0] - '0') * 26*26*26*26;
}

(这假设您的字符串编码包含连续序列中的所有大写字母字符,例如UTF-8。)