我需要将uint32转换为字符串.我怎样才能做到这一点 .strconv.Itoa似乎不起作用.长存储:我需要将通过imap包接收的UID转换为字符串,以便稍后将其设置为序列.作为旁注,我想知道为什么Go中的这种转换很困难.演员string(t)
本来可以这么容易
jul*_*enc 45
我会这样做strconv.FormatUint
:
import "strconv"
var u uint32 = 17
var s = strconv.FormatUint(uint64(u), 10)
// "17"
Run Code Online (Sandbox Code Playgroud)
请注意,预期的参数是uint64
,所以你必须先铸造你的uint32
第一个.没有具体的FormatUint32
功能.
cre*_*ack 40
我只想使用Sprintf甚至只是Sprint:
var n uint32 = 42
str := fmt.Sprint(n)
println(str)
Run Code Online (Sandbox Code Playgroud)
Go是强类型的.直接将数字转换为字符串是没有意义的.想想C,其中string是char *
指向字符串的第一个字母的指针\0
.将数字转换为字符串会导致第一个字母指向数字的地址,这没有意义.这就是你需要"积极"转换的原因.
总结一下:
strconv.Itoa 似乎不起作用
strconv.Itoa
accepts int
,它是有符号整数(32 位或 64 位),依赖于体系结构的类型(请参阅数字类型)。
我需要将 uint32 转换为字符串
该更好的选择,是strconv.FormatUint
因为它更快,具有更少的内存分配(基准的例子在这里或点击这里)。
强制转换 string(t) 本来可以简单得多。
使用string
不像某些人期望的那样工作,请参阅规范:
将有符号或无符号整数值转换为字符串类型会生成一个包含整数的 UTF-8 表示的字符串。超出有效 Unicode 代码点范围的值将转换为“\uFFFD”。
该功能将从 Go2 中移除,参见 Rob Pike 的提议
归档时间: |
|
查看次数: |
32684 次 |
最近记录: |