1 回答

TA貢獻1856條經驗 獲得超17個贊
Jedis 使用 Murmur2,而其他庫使用 Murmur3。
在將一些代碼從 Java/Jedis 遷移到 Golang 時,我也愛上了它。
差異是由于雜音版本不同造成的。迄今為止,Jedis 使用的是 Murmur2,而上述其他庫則使用 Murmur3。
除了查看注釋/代碼之外,我還使用Murmur2 參考實現驗證了這一點。使用相同的種子和密鑰會產生與 Jedis 示例完全相同的結果。
代碼片段:
const char *key = "foo";
uint64_t result = MurmurHash64A(key, std::strlen(key), 0x1234ABCD);
std::cout << "? result (unsigned): " << result << std::endl;
std::cout << "? ? result (signed): " << (long) result << std::endl;
std::cout << "reversed byte order: " << __builtin_bswap64(result) << std::endl;
輸出:
? ? result (unsigned): 11382821594532591967
? ? ? result (signed): -7063922479176959649
? reversed byte order:? 6897758107479832477
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報