将长字符串转换为int64 - Go

时间:2013-12-02 04:44:57

标签: google-app-engine go google-cloud-datastore

我找到了将长字符串格式的整数转换为Go中的int64的方法。我使用了strconv.Atoi,但它给了我一个错误,称“值超出范围”。我搜索了我找到的答案

ParseInt(s string, base int, bitSize int) (i int64, err error)

strconv包中的

。但是,我不明白我应该为函数参数提供什么值,包括base和bitSize。

我正在尝试将从HTTP请求收到的字符串格式的datastore.Key.IntID()解析回int64,以创建在数据存储上执行查询的新密钥。

有人可以向我解释一下base和bitSize参数以及在这种情况下我应该在参数中提供什么值?

1 个答案:

答案 0 :(得分:8)

  

func ParseInt

func ParseInt(s string, base int, bitSize int) (i int64, err error)
     

ParseInt解释给定基数(2到36)中的字符串s并返回   相应的值i。如果base == 0,则表示基数   字符串的前缀:“0x”的基数为16,“0”的基数为8,基数为10   否则。

     

bitSize参数指定结果必须的整数类型   适合。位大小0,8,16,32和64对应于int,int8,   int16,int32和int64。

     

ParseInt返回的错误具有具体类型* NumError和   包括err.Num = s。如果s为空或包含无效数字,则为err.Err   = ErrSyntax;如果对应于s的值不能用给定大小的有符号整数表示,则err.Err = ErrRange。

例如,

package main

import (
    "fmt"
    "strconv"
)

func main() {
    s := "9223372036854775807"
    i, err := strconv.ParseInt(s, 10, 64)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(i)
}

输出:

9223372036854775807