Murmur算法的最佳解释在Murmur Hash Wikipedia 页面:
Murmur3_32(key, len, 种子)
//注意:在这个版本中,所有的整数运算都被执行
//使用无符号 32 位整数。在溢出的情况下,
//结果受应用程序约束
//模2 32算术。
c1 ← 0xcc9e2d51
c2←0x1b873593
r1 ← 15
r2 ← 13
米←5
n ← 0xe6546b64
哈希←种子
对于每四个字节的密钥
k ← 四字节块
k ← k × c1
k ← (k ROL r1)
k ← k × c2
散列←散列异或k
散列←(散列 ROL r2)
哈希 ← 哈希 × m + n
任何剩余的BytesInKey
剩余字节 ← SwapEndianOrderOf(remainingBytesInKey)
// 注意:端交换仅在大端机器上是必需的。
剩余字节数←剩余字节数×c1
剩余字节 ←(剩余字节 ROL r1)
剩余字节数←剩余字节数×c2
散列←散列异或剩余字节
哈希 ← 哈希 XOR len
散列←散列异或(散列SHR 16)
哈希←哈希×0x85ebca6b
hash ← hash XOR (hash SRH 13)
哈希←哈希×0xc2b2ae35
散列←散列异或(散列SHR 16)
还有我自己的: