Golang Base64 в Hex преобразование - PullRequest
1 голос
/ 18 октября 2019

Почему Golang base64 в Hex выдает значение кодирования, отличное от значения онлайн-конвертера?

Исходная строка:

ARVIN

Кодировка Base64:

QVJWSU4 =

Голанг (от 64 до 16):

51564a575355343d

Онлайн ( от base64 до hex ):

415256494e

package main

import (
    "encoding/hex"
    "fmt"
)

func main() {

    base64 := "QVJWSU4="
    hx := hex.EncodeToString([]byte(base64))
    fmt.Println("Original String: ARVIN")
    fmt.Println()
    fmt.Println(base64 + " ==> " + hx)
}

1 Ответ

2 голосов
/ 18 октября 2019

Вы можете преобразовать некодированное значение непосредственно в шестнадцатеричное значение:

h := hex.EncodeToString([]byte("ARVIN"))
fmt.Println(h) // prints 415256494e

Если программа начинается с кодировки base64, программа должна декодировать строку base64 в байты, а затем кодировать байты в шестнадцатеричный код. строка. Это то, что делает онлайн-инструмент.

Код в вопросе кодирует строку base64 в шестнадцатеричную строку. Отсутствует шаг декодирования.

Вот как перекодировать base64 в hex в Go:

p, err := base64.StdEncoding.DecodeString("QVJWSU4=")
if err != nil {
    // handle error
}
h := hex.EncodeToString(p)
fmt.Println(h) // prints 415256494e

Запустите его на игровой площадке .

...