2015-02-09 94 views
-1

问题很简单,如何在Go中直接将十六进制字符串转换为[]字节?

如何将"46447381"转换为[]byte{0x46,0x44,0x73,0x81}

+0

如果问题很简单,为什么问我们?只是开玩笑'。没有违法 – EdmDroid 2015-02-09 07:00:55

+0

这会比我想象的更复杂,因为我只是使用hex.EncodeToString,我想知道为什么我不能使用这种函数来让它回来。 – cuuboy 2015-02-09 07:01:09

+0

@EdmDroid是的问题很简单,但这意味着我想要一个简单的答案。 – cuuboy 2015-02-09 07:06:33

回答

0

只需使用hex.DecodeString()功能:

s := "46447381" 

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

输出:

46 44 73 81 

尝试它的Go Playground

注:

如果你只是单纯的打印使用fmt.Println(data)字节片,打印值将是十进制格式,这就是为什么(因为它是在十六进制格式指定),它不会匹配您的输入string 。的fmt.Println(data)
输出将是:

[70 68 115 129] 

这些都是相同的数字只是十进制基数。

+0

你说得对,我很愚蠢,我认为这不应该转化为十二月,但的确应该是,谢谢。 http://play.golang.org/p/S_blDzfpN7 – cuuboy 2015-02-09 07:11:46