【问题标题】:Convert a bigint to a string in Go在 Go 中将 bigint 转换为字符串
【发布时间】:2012-08-02 09:37:23
【问题描述】:

如何在 Golang 中将大 int 转换为字符串(或整数)?

bigint := big.NewInt(123) //This is what I have
bigstr = "123" //This is what I want

【问题讨论】:

  • 感谢太平洋标准时间的评论。经过数小时的搜索,我会说 bigints 的文档不是很好。例如,我终其一生都无法弄清楚如何将字符串转换为 bigint。

标签: string int go bigint


【解决方案1】:

只需使用String 方法:http://golang.org/pkg/math/big/#Int.String

bigint := big.NewInt(123)
bigstr := bigint.String()

【讨论】:

  • 感谢您的回答,cyberdelia。我应该提出一个新问题,或者我可以问你如何转换:从字符串到 bigint? (同样,我在任何地方都找不到答案)。
  • @BurntSushi5 - 非常感谢!这是 big.Int 示例的一个很棒的小字符串: bigint.SetString("123", 10)
【解决方案2】:

我使用了以下内容:

bigint := big.NewInt(1231231231231)
bigstr := fmt.Sprint(bigint)

【讨论】:

  • 直接调用bigint.String()(而不是通过fmt的接口{})更简单、更高效。为此使用 fmt 包的唯一原因是如果您想使用特殊格式。
  • 我在一个非常大的 int 中使用了 bigint.String() 并获得了类似 1.2123423534546e308
【解决方案3】:

您询问如何将 bigInt 转换为字符串或 int,接受的答案仅说明如何转换为字符串。

所以你有你的bigint := big.NewInt(123)


您可以通过两种可能的方式将 bigInt 转换为整数:

  • 使用.Int64()。与yourInt := bigint.Int64()
  • 使用.Uint64()。与yourUint := bigint.Uint64()

使用两种方法的原因是 uint 持有 2 倍大的数字,有时您知道答案是肯定的。请注意,如果数字大于 int64/uint64 可能的最大值:

如果 x 不能用 int64 表示,则结果未定义。


为了完整起见,要转换为字符串,只需使用 .String() bigstr := bigint.String()

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2013-06-10
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多