dongyou2635 2018-04-10 12:46
浏览 1367
已采纳

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

I was wondering how can I convert a uint64 to big.Int in golang? the shortest way.

I have tried new(big.Int).SetInt64(int64(a uint64 number)).

I don't like it cause it's long, too much nested conversions and I'd rather use a built-in function if it exists.

  • 写回答

1条回答 默认 最新

  • doudongfu8006 2018-04-10 13:01
    关注

    Shortest and safest would be to use the Int.SetUint64() method:

    var x uint64 = 10
    
    i := new(big.Int).SetUint64(x)
    
    fmt.Println(i) // Prints 10
    

    Try it on the Go Playground.

    Care should be taken when manually converting uint64 to int64 (as in your example), as overflow might happen which you won't be notified about, but you will end up with a negative value.

    If you can be sure the value fits into an int64, using the big.NewInt() function is shorter:

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

    Try this one on the Go Playground.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程