如何在golang中将uint64转换为big.Int?

8
我想知道如何在golang中将uint64转换为big.Int,并且希望有最短的方法。我尝试过new(big.Int).SetInt64(int64(a uint64 number)),但是它太长了,嵌套的转换过多,如果有内置函数的话我更愿意使用它。

可能是将bigint转换为字符串(Go语言)的重复问题。 - Mihailo
如果将uint64转换为int64,且其值大于1<<63 - 1,那么将会得到错误的值。 - JimB
1个回答

20

最短且最安全的方法是使用Int.SetUint64()方法:

var x uint64 = 10

i := new(big.Int).SetUint64(x)

fmt.Println(i) // Prints 10

请在Go Playground上尝试一下。

当手动将uint64转换为int64时(如您的示例中),应该注意可能会发生溢出,而您不会收到通知,但最终会得到一个负值。

如果您可以确定该值适合int64,则使用big.NewInt()函数更短:

i := big.NewInt(int64(x))

Go Playground上试一试这个。


谢谢!我不知道SetUint64方法。 - Hossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接