加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
murmurhash.go 563 Bytes
一键复制 编辑 原始数据 按行查看 历史
Memory_Leak 提交于 2018-09-03 16:49 . init: 初始化git仓库
package shorturl
import "encoding/binary"
const magicNumber uint32 = 0x5bd1e995
func MurmurHash2(data []byte, seed uint32) uint32 {
var h, k uint32
h = seed ^ uint32(len(data))
buf := data
for len(buf) >= 4 {
k = binary.LittleEndian.Uint32(buf[:4])
buf = buf[4:]
k *= magicNumber
k ^= k >> 24
k *= magicNumber
h *= magicNumber
h ^= k
}
switch len(buf) {
case 3:
h ^= uint32(buf[2] << 16)
case 2:
h ^= uint32(buf[1] << 16)
case 1:
h ^= uint32(data[0])
h *= magicNumber
}
h ^= h >> 13
h *= magicNumber
h ^= h >> 15
return h
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化