我想知道如何在golang中将
uint64
转换为big.Int
,并且希望有最短的方法。我尝试过new(big.Int).SetInt64(int64(a uint64 number))
,但是它太长了,嵌套的转换过多,如果有内置函数的话我更愿意使用它。uint64
转换为big.Int
,并且希望有最短的方法。我尝试过new(big.Int).SetInt64(int64(a uint64 number))
,但是它太长了,嵌套的转换过多,如果有内置函数的话我更愿意使用它。最短且最安全的方法是使用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上试一试这个。
uint64
转换为int64
,且其值大于1<<63 - 1
,那么将会得到错误的值。 - JimB