详解一下Go语言中的ParseInt

✅ 函数签名

func ParseInt(s string, base int, bitSize int) (i int64, err error)
参数名类型作用
sstring要转换的数字字符串,比如 "123""0x1F""ff"
baseint指定进制,常用的有 2(二进制)、10(十进制)、16(十六进制)
bitSizeint指定目标整数的位数:08163264(决定返回值的范围和溢出判断)

bitSize 决定了解析结果应符合哪个整数类型范围:

0 或 64:输出为 int64 (当 bitSize 传入 0 时,表示你希望返回值是 int 类型对应的系统默认位数(通常是 int64 或 int32,取决于你的平台)。)

32:结果不能超出 int32 范围
16:结果不能超出 int16 范围
8:结果不能超出 int8 范围

返回值类型说明
iint64成功转换后的十进制整数
errerror如果格式错误或溢出,返回错误

该函数将输入的字符串转换成十进制,但你可以向它输入任何可以接收的进制数

num, err := strconv.ParseInt("12345", 10, 64) //十进制
fmt.Println(num) // 输出:12345
num, err := strconv.ParseInt("1a", 16, 64)//十六进制
fmt.Println(num) // 输出:26(1a 十六进制 = 26 十进制)
num, err := strconv.ParseInt("1011", 2, 64)//二进制
fmt.Println(num) // 输出:11

即第二个参数base是传入的字符串的进制,但输出的最终结果只会是十进制

⛔ 错误输入

num, err := strconv.ParseInt("xyz", 10, 64)
if err != nil {
    fmt.Println("出错:", err) // invalid syntax
}

⛔ 进制范围超出

num, err := strconv.ParseInt("9999999999999", 10, 8) // 超出 int8 范围
if err != nil {
    fmt.Println("出错:", err) // value out of range
}

自动识别进制:用 strconv.ParseInt 的兄弟函数 strconv.Atoi() 或 strconv.ParseUint()。

i, err := strconv.Atoi("123") // 只能解析十进制(等价于 ParseInt(s, 10, 0))

带前缀的字符串(如 0x, 0b)不被 ParseInt 自动识别,如果你想要自动识别十六进制/八进制等前缀(如 0x, 0o, 0b),可以使用:

i, err := strconv.ParseInt("0xff", 0, 64)

其中 base = 0 会启用“自动识别前缀”的模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值