有没有办法将字符串(实质上是一个巨大的数字)从字符串转换为Go中的Big int?字符串到大诠释在Go?
我试图首先将它转换成字节阵列
array := []byte(string)
然后阵列转换成BigInt有。
我认为工作,但是,输出是不同于原来的输入。所以我猜测这个转换由于某种原因没有做正确的事情。
我正在处理的数字超过300位数字,所以我不认为我可以使用常规int。
什么是最好的方法对此有什么建议?
有没有办法将字符串(实质上是一个巨大的数字)从字符串转换为Go中的Big int?字符串到大诠释在Go?
我试图首先将它转换成字节阵列
array := []byte(string)
然后阵列转换成BigInt有。
我认为工作,但是,输出是不同于原来的输入。所以我猜测这个转换由于某种原因没有做正确的事情。
我正在处理的数字超过300位数字,所以我不认为我可以使用常规int。
什么是最好的方法对此有什么建议?
import "math/big"
func (z *Int) SetString(s string, base int) (*Int, bool)
的SetString设置z为s的值,在给定的基解释,并且 返回z和一个布尔值,指示成功。整个字符串(不是 只是一个前缀)必须对成功有效。如果SetString失败,则z的 值未定义,但返回值为零。
基本参数必须是0或介于2和MaxBase之间的值。如果 基数为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)
}
游乐场: https://play.golang.org/p/ZaSOQoqZB_
输出:
314159265358979323846264338327950288419716939937510582097494459
见Example用于字符串大int转换。
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)
}
}
输出:
18446744073709551617