我已经在java(jedis和guava)、go和python中尝试了三个版本的murmurhash。java(guava)、go和python版本的结果输出相同的哈希码,但与java(jedis)不同。所有 murmurhash 代码如下所示。我对结果感到困惑。我已经看到这个问题并Long.reverseBytes
在java中使用,但仍然与其他问题不同。那么我应该怎么做才能使 murmurhash 的所有输出保持相同。谢谢~
1.java版本(jedis)
java gradlecompile 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. java(番石榴)
java gradlecompile 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
慕慕森
相关分类