杂音哈希2在Python上的结果

2024-05-15 10:16:21 发布

您现在位置:Python中文网/ 问答频道 /正文

Haskell和Python似乎不同意hurrhash2的结果。Python、Java和PHP返回了相同的结果,但是Haskell没有。我在Haskell上对hurrhash2做了什么错误吗?在

下面是我的Haskell杂音hash2的代码:

import Data.Digest.Murmur32

    main = do
    print $ asWord32 $ hash32WithSeed 1 "woohoo"

下面是用Python编写的代码:

^{pr2}$

Python返回3650852671,Haskell返回3966683799


Tags: 代码importdatahaskellmain错误杂音java
2条回答

从对数据源的快速检查来看,该算法一次操作32位。Python版本只需从输入字符串一次获取4个字节,而Haskell版本则将每个字符转换为一个32位Unicode索引。在

因此,它们产生不同的结果也就不足为奇了。在

^{}包(我是它的作者)不承诺计算与其他语言相同的哈希值。如果您依赖哈希与其他计算哈希的软件兼容,我建议您创建newtype包装器,以您想要的方式计算散列。对于文本,尤其需要指定编码。在您的例子中,您可以使用Data.ByteString.Char8.pack将文本转换为ASCII字符串,但这仍然不能提供相同的哈希值,因为ByteString实例更像是一个占位符。在

顺便说一句,我并没有积极改进这个包,因为杂音hash2已经被杂音hash3取代,但我一直在接受补丁。在

相关问题 更多 >