String 如何在Go中直接将十六进制字符串传输到[]字节?

String 如何在Go中直接将十六进制字符串传输到[]字节?,string,go,hex,slice,String,Go,Hex,Slice,问题很简单 如何将“46447381”转换为[]字节{0x46,0x44,0x73,0x81}?只需使用以下函数: s := "46447381" data, err := hex.DecodeString(s) if err != nil { panic(err) } fmt.Printf("% x", data) 输出: 46 44 73 81 试穿一下 注意: 46 44 73 81 如果仅使用fmt.Println(data)打印字节片,打印的值将采用十进制格式,这就是为

问题很简单

如何将
“46447381”
转换为
[]字节{0x46,0x44,0x73,0x81}

只需使用以下函数:

s := "46447381"

data, err := hex.DecodeString(s)
if err != nil {
    panic(err)
}
fmt.Printf("% x", data)
输出:

46 44 73 81
试穿一下

注意:

46 44 73 81
如果仅使用
fmt.Println(data)
打印字节片,打印的值将采用十进制格式,这就是为什么它与您的输入
字符串不匹配的原因(因为它是以十六进制格式指定的)。
fmt.Println(数据)
的输出为:

[70 68 115 129]

这些数字都是十进制的。

这比我想象的要复杂得多,因为我只使用hex.EncodeToString,我想知道为什么我不能使用这种函数让它返回。@EdmDroid是的,问题很简单,但这意味着我想要一个简单的答案。你说得对,我太蠢了,我认为这不应该转移到dec,但确实应该,谢谢。