Go中的大字符串?

rul*_*ing 6 type-conversion go

有没有办法将字符串(实质上是一个庞大的数字)从字符串转换为Go中的Big int?

我试着先把它转换成字节数组

array := []byte(string)

然后将数组转换为BigInt.

我认为这很有效,但输出与原始输入不同.所以我猜测转换由于某种原因没有做正确的事情.

我正在处理的数字超过300位数,所以我认为我不能使用常规int.

有什么最佳方法的建议吗?

pet*_*rSO 15

包大

import "math/big"

func(*Int)SetString

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

SetString将z设置为s的值,在给定的基础中解释,并返回z和表示成功的布尔值.整个字符串(不仅仅是前缀)必须对成功有效.如果SetString失败,则z的值未定义,但返回的值为nil.

基本参数必须为0或介于2和MaxBase之间的值.如果base为0,则字符串前缀确定实际的转换基数.前缀"0x"或"0X"选择基数16; "0"前缀选择基数8,"0b"或"0B"前缀选择基数2.否则所选基数为10.

例如,

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)
}
Run Code Online (Sandbox Code Playgroud)

游乐场:https://play.golang.org/p/ZaSOQoqZB_

输出:

314159265358979323846264338327950288419716939937510582097494459
Run Code Online (Sandbox Code Playgroud)