是否存在可接收字符串输入并返回整数的现有hash算法?
符合需求的字符串转整型哈希算法
有的,这类哈希算法属于字符串哈希分支中输出固定长度整型的实现,完全可以实现你要求的「输入任意字符串、输出固定长度十进制整数」的效果。
常用实现方案
- BKDR滚动哈希:实现简单、性能高,是日常轻量场景最常用的方案,可通过调整种子值生成符合你预期的映射结果
- CRC32哈希:标准32位校验哈希,输出固定为32位无符号整数,转换为十进制刚好是你示例中8位左右的长度
- 32位MurmurHash:高性能非加密哈希,碰撞概率极低,适合对准确率要求高的生产场景
实现示例
下面是BKDR哈希的Python实现,可以直接输出8位十进制整数:
def bkdr_hash(s: str) -> int: seed = 13131 # 调整该种子值可匹配你示例中的映射关系 hash_val = 0 for char in s: hash_val = hash_val * seed + ord(char) # 限制为32位无符号整数后取模得到8位十进制结果 return (hash_val & 0xFFFFFFFF) % 100000000
如果需要直接用成熟实现,可以调用内置的CRC32接口:
import zlib # 输入字节串,输出32位整型哈希值 print(zlib.crc32(b"Mike"))
注意事项
如果你需要严格匹配你示例中John == 37935291这类固定映射,只需要调整BKDR的种子值、取模参数即可做到1:1匹配。如果是无预置映射要求的场景,直接用默认参数的CRC32或MurmurHash即可。
内容的提问来源于stack exchange,提问作者Moverflow
相关产品推荐
相关产品推荐

