我想知道如何将字符串值(例如:“myObjectName”)散列为 0-19 之间的 int 值,我保证不超过 20 个唯一字符串值。
谢谢
您可以使用任何您喜欢的散列,但在这种情况下,您可以将字符的 ASCII 值(或 unicode 代码点,如果您愿意)相加,然后将模 20 应用于结果。它会给你一个从 0 到 19 的数字。
但这不能保证会产生一个唯一标识您的 20 个字符串的数字。没有散列算法可以保证散列 20 个随机字符串的集合会为每个字符串生成一个唯一的代码。
按照建议添加我的评论作为答案:
我建议散列不是您应该在这里遵循的确切路径。
一种方法是使用字典(如 Python 中的内置数据结构),其中包含字符串的键值对和 1-20(或 0-19)的数字
当您阅读或查看每个字符串时,您可以检查是否存在字典条目,如果存在,则执行任何需要完成的操作,如果不存在,则使用下一个可用数字创建一个新的字典条目(通过查看字典中的现有条目)。
做 md5 和,转换为数字并模 20。例如在 PHP 中:
hexdec(substr(md5("hello"), 1, 8)) % 20
需要 substr() 以便将数字转换为整数。