【发布时间】:2019-10-08 20:40:44
【问题描述】:
我正在尝试找到与 python 的哈希函数等效的 Go:
hash("test")
我发现 this post 这是一个非常相似的函数,因为它返回一个整数,但是它使用 fnv,这似乎是与 python version 不同的散列方法
我要做的是将一个字符串传递给哈希函数,从而在两种语言中为相同的字符串返回完全相同的整数。
【问题讨论】:
-
我不知道答案,但我很好奇你为什么需要这个
-
它的工作原理是内部实现细节,更不用说对象可以有一个
__hash__()方法,这意味着它可以返回任何东西。 -
看起来像XY Problem。你的实际目标是什么?
-
感谢您的回复。我正在尝试确定字符串应该存储在哪个分片上。所以它只是将数据均匀地分布在一系列 MySQL 数据库中。我要去
shard = md5(“1.2.3.4") % 4096。来自pinterest blog 的这一部分(请参阅帖子底部)。 -
在这种情况下,Python 哈希函数是错误的解决方案,因为它会随着每次调用而改变。你需要一个稳定的散列函数。 md5 很好,但毫无疑问还有更快的选择。 CRC16 或 CRC32 可能没问题,除非您正在散列可能是用户操作的输入(在这种情况下,MD5 也不安全)