Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和Python在长输入时返回不同的结果_Java_Python_Hash_Murmurhash - Fatal编程技术网

Java和Python在长输入时返回不同的结果

Java和Python在长输入时返回不同的结果,java,python,hash,murmurhash,Java,Python,Hash,Murmurhash,我正在使用Google开发的Java版本的Hash3(Google.common.hash.HashFunction和Google.common.hash.Hashing)来创建n个独立的hash函数(使用n个不同的种子)来对ID进行尽可能长的散列。下面是一段代码: for(int i=0; i<seeds.length;i++){ signature[i] = hash(id, seeds[i]); } private long hash(in

我正在使用Google开发的Java版本的Hash3(Google.common.hash.HashFunction和Google.common.hash.Hashing)来创建n个独立的hash函数(使用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();
def create_signature(self, id):
    v = np.int64(id)
    signature = []
    for i in range(len(self.__seeds)):
        h = mmh3.hash128(v, self.__seeds[i], signed=True)
        signature.append(h)
    return signature

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

不确定是否是这样,但
mmh3
似乎设计用于处理字符串,因此可能是在计算
str(id)
的哈希值。尝试使用
h=mmh3.hash128(id.to_字节(8,byteorder='little')、self.\u seeds[i],signed=True)
,看看这是否有区别。