【问题标题】:Golang Base64 to Hex conversionGolang Base64 到 Hex 转换
【发布时间】:2019-10-18 01:04:08
【问题描述】:

为什么 Golang base64 to Hex 产生的编码值与在线转换器不同?

原始字符串:

阿文

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转换为十六进制。正确的方式是字符串 => 十六进制。我做错的是 STRING => BASE64 => HEX

标签: go base64 hex


【解决方案1】:

您可以将未编码的值直接转换为十六进制:

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

Run it in the playground.

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2014-06-05
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2015-08-18
    • 2013-08-07
    相关资源
    最近更新 更多