2021-03-18 golang 以太坊大额转账转换问题


本文摘自网络,作者,侵删。

构建以太坊普通交易结构的时候,有个 value参数,类型为 *Int,


正常情况下直接 value := big.NewInt(100000000000000000000)  1ETH

当想转更多时,比如100eth,1000eth 就会报 int64溢出出错


正确的做法是 : 为方便入参,从上游接收一个string类型的value,

然后 

valuef, err := strconv.ParseFloat(value,64)   //先转换为 float64

if err != nil {

  log.Println("is not a number")

}

// 再通过sprintf格式化为*Int

valueWei, isOk := new(big.Int).SetString(fmt.Sprintf("%.0f", valuef*1000000000000000000), 10)

if !isOk {

  log.Println("float to bigInt failed!")

}

此时就不会溢出了,同样 *Int也有转换为string的方法  


本文来自:简书

感谢作者:斜杠青年_728f

查看原文:2021-03-18 golang 以太坊大额转账转换问题

相关阅读 >>

Go log

protoc Go插件编写之四 (实现生成自己的proto文件)

Golang中线程和协程的区别是什么

近期面试回顾

Golang可以开发android吗

Go微服务开发入门

聊聊dapr的consistent hash

Golang- Go语言学习笔记之定义变量

Golang中的defer关键字什么时候生效

2021-03-12:Go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...