在Go中使用位串和big.Int

时间:2017-07-09 13:31:26

标签: go biginteger bigint

我是Go的新手,我正在做一些练习以加快速度。如何将表示位序列的字符串转换为Go?

中的相应数据类型

例如,我看到如果它是一个代表64位数字的位串,我可以这样做: -

val, err := strconv.ParseInt(bitstring, 2, 64)

但是,如果bitstring代表一个更大的数字(比如1024或2048位),我该如何将该数字转换为Go中的相应类型?我相信在Go中管理大整数的类型很大.Int。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用big.Int类型及其Int.SetString()方法,将2作为基础。

示例:

i := big.NewInt(0)
if _, ok := i.SetString("10101010101010101010101010101010101010101010101010101010101010101010101010", 2); !ok {
    fmt.Println("Invalid number!")
} else {
    fmt.Println(i)
}

输出(在Go playground上尝试):

12592977287652387236522