2015-02-09 96 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