将字符串散列到0-19之间的int

时间:2011-08-12 23:40:39

标签: string hash perfect-hash

我想知道如何将字符串值(例如:“myObjectName”)散列为0-19之间的int值 我保证不会有超过20个唯一字符串值。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用任何类型的哈希,但在这种情况下,您可以添加字符的ASCII值(或unicode代码点,如果您愿意),并将模20应用于结果。它会给你一个从0到19的数字。

但这保证会产生一个唯一标识你的20个字符串的数字。没有散​​列算法将保证散列20个随机字符串的集合将导致每个字符串的唯一代码..

答案 1 :(得分:1)

根据建议添加我的评论作为答案:

我建议哈希不是你应该遵循的确切路径。

一种方法是使用字典(如Python中的内置数据结构),它具有字符串的键值对和1-20(或0 - 19)的数字

当您阅读或查看每个字符串时,您可以检查是否存在字典条目,如果存在,则执行任何需要执行的操作,否则,创建具有下一个可用编号的新字典条目(通过查看生成字典中现有条目的数量。)

答案 2 :(得分:0)

做md5总和,转换为数字并做模20。用PHP:

hexdec(substr(md5("hello"), 1, 8)) % 20

需要substr(),以便可以将数字转换为整数。