如何为字符串设置bigint哈希值

时间:2010-08-06 11:32:36

标签: string integer

我们有一个字母数字字符串(最多32个字符),我们想将其转换为整数(bigint)。现在我们正在寻找一种算法来做到这一点。碰撞也不错(因此我们使用bigint来防止这一点),重要的是,计算的整数不断分布在bigint范围内,并且计算的整数对于给定的字符串总是相同的。

3 个答案:

答案 0 :(得分:2)

This page有一些。你需要移植到64位,但这应该是微不足道的。 SBDM哈希的C#端口是here。另一页哈希函数here

答案 1 :(得分:0)

大多数编程语言都带有内置构造或标准库调用来执行此操作。在不懂语言的情况下,我认为没有人可以帮助你。

答案 2 :(得分:0)

是的,“哈希”应该是我的问题的正确描述。我知道,有CRC32,但它只提供一个32位的int(在PHP中),这个32位整数至少有10个字符长,因此未使用大范围的整数!?

大多数情况下,我们有一个像“PX38IEK”这样的短字符串或像“24868d36-a150-11df-8882-d8d385ffc39c”这样的36字符UUID,所以字符串是任意的,是的。

它不一定是可逆的(所以碰撞也不错)。字符串转换为什么int也没关系,我唯一希望的是,尽可能使用完整的bigint范围。