Golang Base64 到十六进制转换
Golang Base64 to Hex conversion
为什么 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)
}
您可以将未编码的值直接转换为十六进制:
h := hex.EncodeToString([]byte("ARVIN"))
fmt.Println(h) // prints 415256494e
鉴于程序以 base64 编码开始,程序必须将 base64 字符串解码为字节,然后将字节编码为十六进制字符串。这就是在线工具的作用。
问题中的代码将base64字符串编码为十六进制字符串。它缺少解码步骤。
以下是在 Go 中将 base64 重新编码为十六进制的方法:
p, err := base64.StdEncoding.DecodeString("QVJWSU4=")
if err != nil {
// handle error
}
h := hex.EncodeToString(p)
fmt.Println(h) // prints 415256494e
为什么 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)
}
您可以将未编码的值直接转换为十六进制:
h := hex.EncodeToString([]byte("ARVIN"))
fmt.Println(h) // prints 415256494e
鉴于程序以 base64 编码开始,程序必须将 base64 字符串解码为字节,然后将字节编码为十六进制字符串。这就是在线工具的作用。
问题中的代码将base64字符串编码为十六进制字符串。它缺少解码步骤。
以下是在 Go 中将 base64 重新编码为十六进制的方法:
p, err := base64.StdEncoding.DecodeString("QVJWSU4=")
if err != nil {
// handle error
}
h := hex.EncodeToString(p)
fmt.Println(h) // prints 415256494e