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

Go语言MD5哈希字节数组转字符串异常问题求助

MD5字节数组转字符串的差异解析
  • MD5哈希函数生成的是16字节的二进制数据,这些字节的数值范围是0-255,其中大部分字节对应的不是可打印的ASCII或UTF-8字符(比如控制字符、非标准ASCII字符)。直接用string()转换时,这些不可打印的字节会被解释成乱码符号,这不是操作错误,是二进制数据转字符串的必然结果。

  • fmt.Sprintf("%x", hash.Sum(nil))的作用是把每个二进制字节转换成两位十六进制字符,比如字节值0xd4会被转成字符串"d4",0x1d转成"1d"。所有字节都被转换成可打印的十六进制字符,这才是我们日常看到的MD5哈希字符串格式。

  • 除了fmt.Sprintf("%x"),还可以用标准库的encoding/hex包实现相同效果,代码更直观:

import "encoding/hex"
// ...
hashStringGood := hex.EncodeToString(hash.Sum(nil))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:55:51