不同语言版本的杂音得到不同的结果

2024-09-27 23:15:17 发布

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

我试过三个版本的java杂音(jedis和guava),go和python。java(guava)、go和python版本的结果输出相同的哈希代码,但与java(jedis)不同。 所有哈希代码如下所示。我对结果感到困惑。我见过这种issue并在java中使用Long.reverseBytes,但与其他语言仍然不同。所以我应该怎么做才能使所有的hash输出保持相同。~谢谢~

<强>1。java版本(绝地)

java渐变compile group: 'redis.clients', name: 'jedis', version: '3.1.0'

import redis.clients.jedis.util.MurmurHash;

MurmurHash murmurhash = new MurmurHash();
long h = murmurhash.hash("foo");
System.out.println(h);
System.out.println(Long.reverseBytes(h));

输出:

-7063922479176959649

6897758107479832477

<强>2。golang版本

import "github.com/spaolacci/murmur3"

foo := int64(murmur3.Sum64WithSeed([]byte("foo"), 0x1234ABCD))
fmt.Println(foo)

输出:

-5851200325189400636

3岁。python版本

pip install mmh3

import mmh3

foo = mmh3.hash64('foo', seed=0x1234ABCD, signed=True)
print(foo)

输出:

-5851200325189400636

4岁。爪哇(番石榴)

爪哇语compile group: 'com.google.guava', name: 'guava', version: '28.0-jre'

import com.google.common.hash.Hashing

long foo = Hashing.murmur3_128(0x1234ABCD).hashString("foo", charset.forName("UTF-8")).asLong();
System.out.println(foo);

输出:

-5851200325189400636

Tags: import版本comgofoohashjavaout

热门问题