我试图在go-lang中将字符串解析为整数.我在文档中找到的问题是它提到的语法如下:
ParseInt(s string, base int, bitSize int)
Run Code Online (Sandbox Code Playgroud)
其中,s是要解析的字符串,base由字符串的前缀暗示:base 16表示"0x",base 8表示"0",其他字符10表示.
该bitSize参数是我现在面临的问题.根据ParseInt的文档,它指定结果必须适合的整数类型.位大小0,8,16,32和64对应于int,int8,int16,int32和int64.
但对于所有的值,如0,8,16,32和64.我得到相同的类型返回值.即int64类型.
任何人都可以指出我错过了什么.
Sal*_*ali 25
根据文件
func ParseInt(s string,base int,bitSize int)(i int64,err error)
无论如何,ParseInt总会返回int64.此外
bitSize参数指定结果必须适合的整数类型
所以基本上你的bitSize参数只告诉你要解析的字符串值在解析后应该适合bitSize.如果不是,将超出范围.
就像这样PlayGround:( strconv.ParseInt("192", 10, 8)因为你看到解析后的值会大于最大值int8).
如果你想将其解析到你需要的任何值,只需使用int8(i)之后(int8,int16,int32).
PS因为你触及了如何转换为特定的intX的主题,我会概述它也可以转换为unsigned int.
Pau*_*kin 16
ParseInt总是返回一个int64,您需要将结果转换为您想要的类型.当您32作为第三个参数传递时,如果解析的值不适合int32,则会得到解析错误,但返回的类型总是如此int64.
例如:
i, err := strconv.ParseInt("9207", 10, 32)
if err != nil {
panic(err)
}
result := int32(i)
fmt.Printf("Parsed int is %d\n", result)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21583 次 |
| 最近记录: |