提问者:小点点

golang中字符串到数字的转换


Golang具有strconv库,可以将字符串转换为int64和uint64。

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

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


共3个答案

匿名用户

如果您更仔细地查看文档,您可以使用此方法;

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

https://golang.org/pkg/strconv/#ParseInt

参数bitSize表示int的大小,因此可以对较小的整数类型执行8、16或32<代码>Atoi在内部调用此函数。我相信你想要10个基本参数。所以像b,err:=strconv。ParseInt(“5”,10,8)表示一个字节。

编辑:只是要在这里的答案中添加一些东西,以防OP实际上混淆了如何将16位int转换为字符串...如果这是您的预期目标,请使用fmt. Sprintf,或者您可以从较小的int转换为较大的int,因为它总是会成功的。这里有两者的例子;https://play.golang.org/p/UWSVxEmQ1N

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)
}

匿名用户

可以使用fmt将任何int类型转换为string。Sprintf()方法

var num int64
numstring:=fmt.Sprintf("%d",num)

匿名用户

例如

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"