2014-07-22 39 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函数。