string to big Int in Go?

前端 未结 2 2012
再見小時候
再見小時候 2021-02-08 16:27

Is there a way to convert a string (which is essentially a huge number) from string to Big int in Go?

I tried to first convert it into bytes array

array :

相关标签:
2条回答
  • 2021-02-08 17:15

    Package big

    import "math/big"

    func (*Int) SetString

    func (z *Int) SetString(s string, base int) (*Int, bool)

    SetString sets z to the value of s, interpreted in the given base, and returns z and a boolean indicating success. The entire string (not just a prefix) must be valid for success. If SetString fails, the value of z is undefined but the returned value is nil.

    The base argument must be 0 or a value between 2 and MaxBase. If the base is 0, the string prefix determines the actual conversion base. A prefix of “0x” or “0X” selects base 16; the “0” prefix selects base 8, and a “0b” or “0B” prefix selects base 2. Otherwise the selected base is 10.

    For example,

    package main
    
    import (
        "fmt"
        "math/big"
    )
    
    func main() {
        n := new(big.Int)
        n, ok := n.SetString("314159265358979323846264338327950288419716939937510582097494459", 10)
        if !ok {
            fmt.Println("SetString: error")
            return
        }
        fmt.Println(n)
    }
    

    Playground: https://play.golang.org/p/ZaSOQoqZB_

    Output:

    314159265358979323846264338327950288419716939937510582097494459
    
    0 讨论(0)
  • 2021-02-08 17:16

    See Example for string to big int conversion.

    package main
    
    
    import (
        "fmt"
        "log"
        "math/big"
    )
    
    func main() {
        i := new(big.Int)
        _, err := fmt.Sscan("18446744073709551617", i)
        if err != nil {
            log.Println("error scanning value:", err)
        } else {
            fmt.Println(i)
        }
    }
    

    Output:

    18446744073709551617
    
    0 讨论(0)
提交回复
热议问题