Golang具有strconv库,可将字符串转换为int64和uint64。
但是,其余整数数据类型似乎不受支持,因为我找不到字节,int16,uint16,int32,uint32数据类型的转换函数。
始终可以将字节,16位和32位数据类型转换为int64和uint64,而不会损失精度。 这是语言的意图吗?
- 是的,转换为uint64或int64,然后编码为字符串。
- 使用fmt.Sprintf()将任何整数类型转换为字符串
您可以使用fmt.Sprintf()方法将任何int类型转换为字符串
1 2 | var num int64 numstring:=fmt.Sprintf("%d",num) |
例如,
1 2 3 4 5 6 7 8 9 10 11 12 13 | package main import ( "fmt" "strconv" ) func main() { n := int16(42) s := strconv.FormatInt(int64(n), 10) fmt.Printf("n %d s %q ", n, s) } |
输出:
1 | n 42 s"42" |
如果您仔细看一下文档,可以使用此方法。
1 | func ParseInt(s string, base int, bitSize int) |
https://golang.org/pkg/strconv/#ParseInt
编辑:如果OP实际上混淆了如何将16位int转换为字符串,只需在此处添加一些答案即可...如果这是您的预期目标,请使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | package main import"fmt" import"strconv" func main() { var a int16 a = 5 s := fmt.Sprintf("%d", a) s2 := strconv.Itoa(int(a)) fmt.Println(s) fmt.Println(s2) } |
-
ParseInt 从字符串转换为整数。问题是询问另一个方向-转换为字符串。 -
@zmb我对此表示高度怀疑。大小问题仅在从字符串变为数字类型时才有意义。字符串的大小是不受限制的(CPU内存除外),因此我显然可以将语言中任何类型的数字转换为字符串,而不必考虑任何此类问题。我也不需要使用像
strconv 这样的特殊库,fmt 中的方法就足够了。最后,如果我有一个32位int和一个itoa方法仅适用于64位,因为OP指出其非常明显的是需要做的事情,这是强制转换为(int64) 的方法,它将永远成功... - @zmb不,它没有。
- 怎么会该问题的标题为"数字转换为字符串",然后说" strconv将int64和uint64转换为字符串"。
- @zmb我认为由于这个问题没有任何意义,OP感到困惑。一个数字占用的字节数显然与转换为字符串无关...无论如何,为了回应您的评论,我更新了解释任一方向的转换,然后降低了_(ツ)_ /
- 我认为OP也很困惑,只是出于不同的原因。也许他不知道fmt软件包。无论哪种情况,您都可以得到我的支持:)