温馨提示:本文翻译自stackoverflow.com,查看原文请点击:go - golang hex encode to upper case string?
encoding go hex

go - golang十六进制编码为大写字符串?

发布于 2020-04-12 12:29:08

什么是最好的方式像编码:hex.EncodeToString

https://golang.org/pkg/encoding/hex/#EncodeToString

但是变成大写字母了吗?

查看更多

提问者
user29950mb89
被浏览
198
118k 2020-02-03 00:31

您可以调用strings.ToUpper()结果:

src := []byte("Hello")

s := hex.EncodeToString(src)
fmt.Println(s)

s = strings.ToUpper(s)
fmt.Println(s)

或者您可以将其fmt.Sprintf()%X动词一起使用

s = fmt.Sprintf("%X", src)
fmt.Println(s)

上面的输出(在Go Playground上尝试):

48656c6c6f
48656C6C6F
48656C6C6F

如果性能很重要,请实施自己的编码器。看看的来源encoding/hex这很简单:

const hextable = "0123456789abcdef"

func EncodeToString(src []byte) string {
    dst := make([]byte, EncodedLen(len(src)))
    Encode(dst, src)
    return string(dst)
}

func Encode(dst, src []byte) int {
    j := 0
    for _, v := range src {
        dst[j] = hextable[v>>4]
        dst[j+1] = hextable[v&0x0f]
        j += 2
    }
    return len(src) * 2
}

是的,您只需要更改hextable为包含大写字母即可。