为什么Golang base64到Hex会产生与在线转换器不同的编码值?
原始字符串:
ARVIN
Base64编码:
QVJWSU4 =
Golang(base64到十六进制):
51564a575355343d
在线(base64 to 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)
}
在线工具将base64字符串解码为字节,然后将字节编码为十六进制字符串。
问题中的代码将base64字符串编码为十六进制字符串。它缺少解码的步骤。
这是在Go中将base64重新编码为十六进制的方法:
p, err := base64.StdEncoding.DecodeString("QVJWSU4=")
if err != nil {
// handle error
}
h := hex.EncodeToString(p)
fmt.Println(h) // prints 415256494e