我试过三个版本的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
目前没有回答
相关问题 更多 >
编程相关推荐