golang шестнадцатеричное кодирование в верхний регистр строки? - PullRequest
0 голосов
/ 02 февраля 2020

Как лучше всего кодировать в go как: hex.EncodeToString

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

Но в заглавные буквы буквы?

1 Ответ

3 голосов
/ 02 февраля 2020

Вы можете позвонить 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 на заглавные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...