我有一个包含整数的字符串(已从文件中读取)。
我正在尝试将 转换string为intusing strconv.ParseInt()。 ParseInt要求我提供一个位大小(位大小 0、8、16、32 和 64 对应于 int、int8、int16、int32 和 int64)。
string
int
strconv.ParseInt()
ParseInt
从文件中读取的整数很小(即它应该适合正常的 int)。但是,如果我传递的位大小为 0,则会得到类型结果int64(大概是因为我在 64 位操作系统上运行)。
int64
为什么会这样?我怎样才能得到一个普通的 int?(如果有人对我何时以及为什么应该使用不同的 int 类型有一个快速入门,那就太棒了!)
编辑:我可以使用 .int64 将 int64 转换为普通 int int([i64_var])。但是我仍然不明白为什么ParseInt()在我请求位大小为 0 时给我一个 int64。
int([i64_var])
ParseInt()
func ParseInt(s string, base int, bitSize int) (i int64, err error)
ParseInt 总是返回 int64
bitSize定义值的范围。如果与 s 对应的值不能用给定大小的有符号整数表示,则 err.Err = ErrRange。
bitSize
type int int
int 是大小至少为 32 位的有符号整数类型。然而,它是一种独特的类型,而不是例如 int32 的别名。
所以int将来可能会大于 32 位或在某些系统上(如intC)。
我猜在某些系统上int64可能比int32因为该系统仅适用于 64 位整数更快。
int32
这bitSize是 8时的错误示例
package main import ( "fmt" "strconv" ) func main() { i, err := strconv.ParseInt("123456", 10, 8) fmt.Println(i, err) }