String 将字符串散列为介于0-19之间的整数

String 将字符串散列为介于0-19之间的整数,string,hash,perfect-hash,String,Hash,Perfect Hash,我想知道如何将字符串值(例如:“myObjectName”)散列为介于0-19之间的int值 我保证不超过20个唯一的字符串值 谢谢进行md5求和、转换为数字并进行模20运算。例如,在PHP中: hexdec(substr(md5(“你好”),1,8))%20 需要substr(),以便将数字转换为整数。您可以使用任何类型的散列,但在本例中,您可以将字符的ASCII值(或unicode码点,如果您愿意)相加,并对结果应用模20。它会给你一个从0到19的数字 但这保证会产生一个唯一标识20个字符串

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


谢谢

进行md5求和、转换为数字并进行模20运算。例如,在PHP中:

hexdec(substr(md5(“你好”),1,8))%20


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

您可以使用任何类型的散列,但在本例中,您可以将字符的ASCII值(或unicode码点,如果您愿意)相加,并对结果应用模20。它会给你一个从0到19的数字


但这保证会产生一个唯一标识20个字符串的数字。任何哈希算法都不能保证对20个随机字符串的集合进行哈希运算会为每个字符串生成唯一的代码。

添加我的注释作为建议的答案:

我认为散列并不是你应该遵循的正确路径

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


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

这里的问题是什么?如何散列字符串?我不确定散列是否正是您想要的。因为您的边界是20,所以您可以简单地创建一个字典构造,其中键是字符串,值是数字。当您看到字符串时,请检查是否有字典条目,如果没有,请创建下一个键值对。@Evan,您可以将其作为答案发布。@GolezTrol谢谢,因为它没有明确回答如何使用哈希执行操作的问题,所以不确定它是否合适。我在下面加了它。@Evan。确实没有,但我觉得这个问题是错误的,您的答案就是用户257543想要问的问题的答案。;-)