如何在 Go 中将整数转换为固定长度的十六进制字符串?

How to convert integer to fixed length hex string in Go?

我想将一个整数转换为固定长度为 64 个字符的十六进制字符串,并为未用完所有 32 个十六进制值的整数值添加零前缀。如果我尝试以下操作,它会在 s 前面添加空格而不是零。

i := 898757
s := fmt.Sprintf("%64x", i)
fmt.Println(s)

正确的格式是"%064x":

fmt.Printf("%064x\n", 898757)

00000000000000000000000000000000000000000000000000000000000db6c5

其中前导 0 是格式字符串的 "flag"。根据 fmt docs:

0: pad with leading zeros rather than spaces; for numbers, this moves the padding after the sign

我个人的偏好是使用句点将标志与长度字段分开。这在技术上是可行的,因为 . 对整数动词没有意义并被忽略。我发现它是一个有用的视觉指示器。格式字符串变为 "%0.64x".