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

问题描述 投票:-1回答:1

我想将整数转换为固定长度为64个字符的十六进制字符串,对于不使用全部32个十六进制值的整数值,请添加零。如果尝试以下操作,它将在s前面添加空格,而不是零。

i := 898757
s := fmt.Sprintf("%64x", i)
fmt.Println(s)
string go type-conversion int hex
1个回答
3
投票

正确的格式是"%064x"

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

00000000000000000000000000000000000000000000000000000000000000000000000db6c5

[开头的0是格式化字符串的“标志”。根据fmt docs

0:填充前导零而不是空格;对于数字,这会将填充移到符号后]

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

© www.soinside.com 2019 - 2024. All rights reserved.