深拷贝
1 | package main |
判断值是否大于、小于或等于 0
如果 x < 0 返回 -1
如果 x == 0 返回 0
如果 x > 0 返回 +1
1 | package main |
如果判断是否为 0 那么也可以用这个,如果 BitLen() 返回 0 那么就是值为 0
1 | var a = new(big.Int) |
转化为固定长度的 bytes
转化为 bytes 很简单,直接使用 Bytes() 即可,但转化的 bytes 只有值的最小字节长度。
1 | var a = big.NewInt(1) |
如果要转化为固定长度,在 go 1.15 可以使用 FillBytes() 方法,这个比较配合适合 crypto 库使用
1 | package main |
json.Number
bigint 进行 json 序列化的时候默认转化为 json.Number(float64),但是值如果过大,那么会精度损失,最佳的方式转化为 decimal string 即可。这个比较复杂,我这里封装了一个库,可以直接使用。
1 | package main |
当然也直接 hex string json 反序列化。
1 | package main |
另外这个库也实现了 driver.Valuer
和 sql.Scanner
,适用在数据库序列化使用。
1 | // sql.Scanner |