我想将整数转换为固定长度为64个字符的十六进制字符串,对于不使用全部32个十六进制值的整数值,请添加零。如果尝试以下操作,它将在s
前面添加空格,而不是零。
i := 898757
s := fmt.Sprintf("%64x", i)
fmt.Println(s)
正确的格式是"%064x"
:
fmt.Printf("%064x\n", 898757)
00000000000000000000000000000000000000000000000000000000000000000000000db6c5
[开头的0
是格式化字符串的“标志”。根据fmt docs:
0:填充前导零而不是空格;对于数字,这会将填充移到符号后]
我个人的喜好是使用句点将标志与长度字段分开。这在技术上是可行的,因为.
对整数动词没有意义,因此会被忽略。我发现它是有用的视觉指示器。格式字符串变为"%0.64x"
。