Decimal to UpperCase Hex String on Go

huangapple go评论91阅读模式
英文:

Decimal to UpperCase Hex String on Go

问题

我正在将一个十进制数转换为(修改后的)十六进制值,并在一个循环中使用 fmt.Sprintf 函数形成一个长字符串。但是我希望该值为大写字母的十六进制,而不是小写字母的十六进制。这应该在哪里进行修改?在十进制到十六进制的转换中?还是在 strings.Join 函数的修改中?

for ....{
    b := []string{}
    b = append(b, fmt.Sprintf("[%d=%s]", m.K, fmt.Sprintf("%016X", m.V)[2:14]))
}

fmt.Fprintf(
    outputFile,
    "%d, 0, %d, %s, 0\n",
    ..,
    ..,
    ..,
    strings.Join(b, " "))

你只需要将 fmt.Sprintf("%016x", m.V) 中的小写字母 x 改为大写字母 X 即可实现大写字母的十六进制表示。修改后的代码如下:

for ....{
    b := []string{}
    b = append(b, fmt.Sprintf("[%d=%s]", m.K, fmt.Sprintf("%016X", m.V)[2:14]))
}

fmt.Fprintf(
    outputFile,
    "%d, 0, %d, %s, 0\n",
    ..,
    ..,
    ..,
    strings.Join(b, " "))
英文:

I'm converting a Decimal to (a modified) Hex value within an fmt.Sprintf function as I form a long string with a for loop - But want the value to be UpperCase rather than LowerCase Hex. Where should this occur? In the Dec to Hex conversion? Or a modification of the strings.Join function?

for ....{
b := []string{}
b = append(b, fmt.Sprintf("[%d=%s]", m.K, fmt.Sprintf("%016x", m.V)[2:14]))}

fmt.Fprintf(
			outputFile,
			"%d, 0, %d, %s, 0\n",
        ..,
        ..,
        ..,
        strings.Join(b, " "))

答案1

得分: 4

> fmt 包
>
> 导入 "fmt"
>
> 打印
>
> 格式化动词:
>
> 字符串和字节切片:
>
> %x 十六进制,小写,每个字节两个字符
> %X 十六进制,大写,每个字节两个字符

例如,

fmt.Sprintf("%016X", m.V)[2:14]
英文:

> Package fmt
>
> import "fmt"
>
> Printing
>
> The verbs:
>
> String and slice of bytes:
>
> %x base 16, lower-case, two characters per byte
> %X base 16, upper-case, two characters per byte

For example,

fmt.Sprintf("%016X", m.V)[2:14]

huangapple
  • 本文由 发表于 2014年11月26日 08:41:26
  • 转载请务必保留本文链接:https://go.coder-hub.com/27139448.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定