请原谅我的语言新颖。我找到了此示例,将其编码为字节,然后使用fmt.Printf进行了输出,但是如何将本示例的字符串表示形式存储在变量中呢?

src := []byte("Hello Gopher!")

dst := make([]byte, hex.EncodedLen(len(src)))
hex.Encode(dst, src)

fmt.Printf("%s\n", dst) // output: 48656c6c6f20476f7068657221 (how do I get this output rather in a variable?

我想在一个变量中设置dst,以便稍后在代码中使用,而不是打印出来。

编辑
原始问题被标记为与此重复:Format a Go string without printing?

但是,那里的答案似乎仅涉及使用Sprintf格式化字符串的格式,在这个问题中,我试图找出如何格式化从hex编码的byte,但是示例使用fmt.Printf%s中打印出来。但是我想格式化以在变量中使用,该变量可以在以后的代码中重用。所以我不认为这是明显原因的重复,因为它涉及格式化字符串,而不是字节中的十六进制

最佳答案

例如,

package main

import (
    "encoding/hex"
    "fmt"
)

func main() {
    str := "Hello Gopher!"
    fmt.Println(str)
    src := []byte(str)
    fmt.Println(src)
    dst := hex.EncodeToString(src)
    fmt.Println(dst)
}

游乐场:https://play.golang.org/p/qwT_cGpWoYb

输出:
Hello Gopher!
[72 101 108 108 111 32 71 111 112 104 101 114 33]
48656c6c6f20476f7068657221

10-07 16:09
查看更多