Using big integer values in Go? (ParseInt only converts up to "2147483647"?)

go

Solution

You want the math/big package, which provides arbitrary-precision integer support.

import "math/big"

func main() {
    // ...
    for i, line := range lines {
        bi := big.NewInt(0)
        if _, ok := bi.SetString(line, 10); ok {
            fmt.Printf("number = %v\n", bi)
        } else {
            fmt.Printf("couldn't interpret line %#v\n", line)
        }
    }
}

Here's a quick example of it working.

Problem

How do you convert a long string of digits (50 digits) into an integer in Go? I am getting the output for the code below: ``` number = 2147483647 ``` err = strconv.ParseInt: parsing "37107287533902102798797998220837590246510135740250 ": value out of range It seems to be able to convert numbers only up to 2147483647. ``` package main import "fmt" import "io/ioutil" import "strings" import "strconv" var ( number int64 ) func main() { fData,err := ioutil.ReadFile("one-hundred_50.txt") if err != nil { fmt.Println("Err is ",err) } strbuffer := string(fData) lines := strings.Split(strbuffer, "\n") for i, line := range lines { fmt.Printf("%d: %s\n", i, line) number, err := strconv.Atoi(line) fmt.Println("number = ", number) fmt.Println("err = ", err) } } ```

Original source