golang 十六进制编码为大写字符串?
golang hex encode to upper case string?
go 中最好的编码方式是什么:
hex.EncodeToString
https://golang.org/pkg/encoding/hex/#EncodeToString
但是变成大写字母?
您可以调用 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
更改为包含大写字母即可。
go 中最好的编码方式是什么: hex.EncodeToString
https://golang.org/pkg/encoding/hex/#EncodeToString
但是变成大写字母?
您可以调用 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
更改为包含大写字母即可。