2014-07-22 41 views
13

我需要將uint32轉換爲字符串。我怎樣才能做到這一點 。 strconv.Itoa似乎不起作用。 長存儲: 我需要將通過imap包收到的UID轉換爲字符串,以便稍後可以將其設置爲一個序列。作爲一個便箋,我想知道爲什麼這樣的轉換在Go中很困難。一鑄造string(t)能如此容易得多如何將uint32轉換爲字符串?

+0

itoa不能與uint32一起使用//代碼UIDI:= imap.AsNumber(rsp.MessageInfo().UID) – hey

回答

22

我只想用sprintf甚至只是衝刺:

var n uint32 = 42 
str := fmt.Sprint(n) 
println(str) 

走的是強類型。直接將一個數字轉換爲字符串是沒有意義的。想一想C在哪裏字符串是char *這是一個指向由\0終止的字符串的第一個字母的指針。將一個數字轉換爲一個字符串將導致第一個字母指向該數字的地址,這是沒有意義的。這就是爲什麼你需要「積極」轉換。

21

我會用strconv.FormatUint做到這一點:

import "strconv" 

var u uint32 = 17 
var s = strconv.FormatUint(uint64(u), 10) 
// "17" 

注意,期望的參數是uint64,所以你要投你uint32第一。沒有具體的FormatUint32函數。