Go 如何将uint32转换为字符串?
我需要将Go 如何将uint32转换为字符串?,go,Go,我需要将uint32转换为string。我该怎么做strconv.Itoa似乎不起作用 说来话长: 我需要将通过imap包接收的UID转换为string,以便以后可以将其设置为序列。作为旁注,我想知道为什么这样的转换在围棋中很困难。一个caststring(t)本可以轻松得多。 请注意,预期参数为uint64,因此必须首先强制转换uint32。没有特定的FormatUint32函数。我只会使用Sprintf,甚至只使用Sprint: var n uint32 = 42 str := fmt.Sp
uint32
转换为string
。我该怎么做<代码>strconv.Itoa似乎不起作用
说来话长:我需要将通过imap包接收的UID转换为
string
,以便以后可以将其设置为序列。作为旁注,我想知道为什么这样的转换在围棋中很困难。一个caststring(t)
本可以轻松得多。
请注意,预期参数为
uint64
,因此必须首先强制转换uint32
。没有特定的FormatUint32
函数。我只会使用Sprintf,甚至只使用Sprint:
var n uint32 = 42
str := fmt.Sprint(n)
println(str)
Go是强类型的。将数字直接转换为字符串是没有意义的。想想C,其中字符串是char*
,它是指向字符串的第一个字母的指针,以\0
结尾。将数字强制转换为字符串将导致第一个字母指针指向该数字的地址,这是没有意义的。这就是您需要“主动”转换的原因。总结:
strconv.Itoa似乎不起作用
接受int
,它是有符号整数(32位或64位),与体系结构相关(请参阅)
我需要将uint32转换为字符串
strconv.FormatUint
,因为它速度更快,内存分配更少(基准测试或示例)
一根铸弦(t)可能会容易得多
使用string
并不像某些人期望的那样有效,请参阅:
将有符号或无符号整数值转换为字符串类型将生成一个包含整数UTF-8表示形式的字符串。超出有效Unicode代码点范围的值将转换为“\uFFFD”
此函数将从Go2中删除,请参见Rob Pike的itoa不适用于uint32//code UIDI:=imap.AsNumber(rsp.MessageInfo().UID)。此解决方案速度更快。因此,我建议使用它<代码>基准测试UINTSTRCONV-8 50000000 36.8纳秒/操作vs.
基准测试UINTSPRINT-8 20000000 118纳秒/操作
var n uint32 = 42
str := fmt.Sprint(n)
println(str)