在 go 中,使用 `fmt.sprintf` 进行数值到十六进制字符串转换时,只需将动词从 `%x` 替换为 `%x` 即可直接生成大写十六进制字符,无需额外字符串处理或 `strings.join` 修改。
Go 的 fmt 包为十六进制格式化提供了明确区分大小写的动词:
因此,在你的循环中,只需将原代码中的 %016x 改为 %016X,即可一步获得大写、零填充、16 位宽的十六进制字符串:
for _, m := range yourSlice {
b := []string{}
// ✅ 正确:使用 %X 实现大写十六进制
hexStr := fm
t.Sprintf("%016X", m.V)[2:14] // 截取第2~13位(共12字符)
b = append(b, fmt.Sprintf("[%d=%s]", m.K, hexStr))
}
fmt.Fprintf(
outputFile,
"%d, 0, %d, %s, 0\n",
/* ...其他参数... */,
strings.Join(b, " "),
)⚠️ 注意事项:
hexStr := fmt.Sprintf("%016X", uint64(m.V))[2:14]总结:十六进制字母大小写由 fmt 动词决定,而非后续字符串操作。选择 %X 是最简洁、高效、符合 Go 惯用法的解决方案。