2012-08-04 148 views
9

如何在Golang中将big int转换为字符串(或整数)?将bigint转换为Go中的字符串

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

感谢您的评论PST。经过几个小时的搜索,我会说在bigint上这个文档不是很好。例如,我仍然无法弄清楚如何将字符串转换为bigint。 – Yster 2012-08-04 23:20:56

回答

19

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

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

感谢您的回答,cyberdelia。我应该提出一个新问题,还是我可以问你如何转换:从一个字符串到一个bigint? (再次,我无法在任何地方找到答案)。 – Yster 2012-08-04 22:14:54

+3

@Yster - http://golang.org/pkg/math/big/#Int.SetString – BurntSushi5 2012-08-05 01:26:04

+0

@ BurntSushi5 - 非常感谢!例如:bigint.SetString(“123”,10) – Yster 2012-08-05 07:20:37

0

我用下面的:

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

直接调用'bigint.String()'(而不是通过fmt的接口{})更简单,更高效。为此使用'fmt'包的唯一原因是如果你想使用特殊的格式。 – 2015-03-20 05:23:12

+0

我在一个非常大的int中使用了bigint.String(),并获得了类似1.2123423534546e308 – victorsamuelmd 2015-03-20 05:29:24

0

你问如何将BIGINT转换为字符串或为int,接受的答案解释只有如何转换为字符串。

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


您可以将BIGINT转换成整数的两种可能的方式:

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

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

如果x无法在int64中表示,则结果是未定义的。


而对于完整性,转换为字符串,只需使用.String()bigstr := bigint.String()