golang中字符串到数字的转换

golang中字符串到数字的转换,go,Go,Golang具有将字符串转换为int64和uint64的库 但是,其他整数数据类型似乎不受支持,因为我找不到byte、int16、uint16、int32、uint32数据类型的转换函数 始终可以将字节、16位和32位数据类型转换为int64和uint64,而不会丢失精度。这就是语言的意图吗?如果你仔细查看文档,你可以使用这种方法 func ParseInt(s string, base int, bitSize int) bitSize参数表示int的大小,因此可以对较小的整数类型执行8或

Golang具有将字符串转换为int64和uint64的库

但是,其他整数数据类型似乎不受支持,因为我找不到byte、int16、uint16、int32、uint32数据类型的转换函数


始终可以将字节、16位和32位数据类型转换为int64和uint64,而不会丢失精度。这就是语言的意图吗?

如果你仔细查看文档,你可以使用这种方法

func ParseInt(s string, base int, bitSize int)

bitSize
参数表示int的大小,因此可以对较小的整数类型执行
8
16
32
Atoi
在内部调用此函数。我相信你想要
10
作为
base
参数。就像
b一样,err:=strconv.ParseInt(“5”,10,8)
表示一个字节

编辑:只是想在这里添加一些东西,以防OP实际上对如何将16位int转换为字符串感到困惑。。。如果这是您的预期目标,只需使用
fmt.Sprintf
,或者您可以将较小的int转换为较大的int,因为它将始终成功。这两个例子在这里

比如说,

package main

import (
    "fmt"
    "strconv"
)

func main() {
    n := int16(42)
    s := strconv.FormatInt(int64(n), 10)
    fmt.Printf("n %d s %q\n", n, s)
}
输出:

n 42 s "42"

可以使用fmt.Sprintf()方法将任何int类型转换为字符串


ParseInt
将字符串转换为整数。问题是关于另一个方向——转换成字符串。@zmb我非常怀疑这一点。大小问题仅在从字符串到数字类型时才相关。字符串在大小上是无界的(除了CPU的内存),所以我可以明显地将语言中任何类型的数字转换成字符串,而不必考虑其中任何一个。我也不需要使用特殊的库,比如
strconv
fmt
中的方法就足够了。最后,如果我有一个32位的int和一个只适用于64位的“itoa”方法,正如OP所指出的,那么很明显需要做的是转换到
(int64)
,它总是会成功的…怎么不呢?这个问题的标题是“数字到字符串的转换”,然后说“strconv将int64和uint64转换为字符串”。@zmb我认为OP是混乱的,因为这个问题没有任何意义。数字占用的字节数显然与转换为字符串无关。。。无论如何,为了回应你的评论,我更新了解释两个方向的转换,然后被否决了“_(ツ)_/''我认为OP也感到困惑,只是出于另一个原因。也许他不知道fmt包。在这两种情况下,你都得到了我的支持:)是的,转换为uint64或int64,然后编码为字符串。使用fmt.Sprintf()将任何整数类型转换为字符串
[]字节
,将字符串设置为uint8或
[]符文的片段
将字符串设置为int32的片段。看
string([]字节))
string([]符文))
将字节或符文片段设置为字符串。请参阅和。我引用的顶级答案。我加进去了吗?看见
n 42 s "42"
var num int64
numstring:=fmt.Sprintf("%d",num)