You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言Murmur3哈希结果与Python mmh3不一致,如何统一?

Go与Python mmh3哈希结果不一致的解决方法

你遇到的差异核心原因是返回值的符号类型不同:

  • Python的mmh3.hash()默认返回带符号的32位整数(int32)
  • Go的murmur3.Sum32()/Sum32WithSeed()返回的是无符号的32位整数(uint32)

只需将Go计算出的无符号哈希值强制转换为带符号的int32,就能和Python的结果完全对齐。

修正后的Go代码

package main

import (
    "fmt"
    "github.com/spaolacci/murmur3"
)

func main() {
    // 计算无符号32位哈希值
    hashUint := murmur3.Sum32WithSeed([]byte("foods"), 45)
    // 转换为带符号int32,匹配Python mmh3.hash的输出格式
    hashInt := int32(hashUint)
    fmt.Println(hashInt)
}

验证结果

运行你的Python示例代码得到的结果,修正后的Go代码会输出完全相同的数值。

内容的提问来源于stack exchange,提问作者chensiwei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:30:43