杂音hash3java和Python在长inpu上返回不同的结果

2024-06-14 11:35:13 发布

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

我使用的是Google开发的一个Java版本的hurrhash3(google.common.hash.HashFunction和google.common.hash.Hashing)创建n独立的散列函数(使用n不同的种子)来散列ID。下面是一段代码:

    for(int i=0; i<seeds.length;i++){
        signature[i] =  hash(id, seeds[i]);
    }

    private long hash(int id, int seed){
        HashFunction hf = Hashing.murmur3_128(seed);
        long signature = hf.hashLong((long)id).asLong();

我试图在python2.7中使用mmh3(https://pypi.org/project/mmh3/)复制上述代码,但是Python版本只接受字符串作为输入(或numpyint),并且使用相同的种子返回不同的结果。下面是一段代码:

^{pr2}$

在一组不同的id上应用mmh3库,也会有很多冲突(与Java版本没有冲突)。有没有办法用Python获得Java版本的相同结果?在


Tags: 代码版本idgooglehashjavacommon种子