登录
首页 >  Golang >  Go问答

字符串到 Go 中的大 Int?

来源:Golang技术栈

时间:2023-03-25 18:21:45 490浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《字符串到 Go 中的大 Int?》将会介绍到golang等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

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

我尝试先将其转换为字节数组

array := []byte(string)

然后将数组转换为 BigInt。

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

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

关于什么是最好的方法的任何建议?

正确答案

包大

import "math/big"

func (*Int) 设置字符串

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

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

base 参数必须为 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

到这里,我们也就讲完了《字符串到 Go 中的大 Int?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>