鉴于:arr := make([]byte, 8)fmt.Println(arr) // [0 0 0 0 0 0 0 0]big := new(big.Int).SetBytes(arr).Bytes()fmt.Println(big) // []我试着把数字 1 放进去,得到了这样的结果:... // [0 0 0 0 0 0 0 1] from []byte...// [1] from big.Int我必须保留 8 的长度,但big.Int不允许这样做。怎样才能把它保存下来呢?
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
该Int
类型在内部不保留构造它的字节,并Bytes
返回表示该值所需的最小字节数。
为了将它变成一个固定长度的字节片,使用FillBytes
方法。您需要确保该值适合提供的字节片,否则会出现 panic。
例子:
package main
import (
"fmt"
"math/big"
)
func main() {
xarr := []byte{1, 2, 3}
fmt.Println(xarr)
x := new(big.Int).SetBytes(xarr)
fmt.Println(x)
y := big.NewInt(0)
y.Add(x, big.NewInt(2560))
fmt.Println(y)
yarr := make([]byte, 8)
y.FillBytes(yarr)
fmt.Println(yarr)
}
输出:
[1 2 3]
66051
68611
[0 0 0 0 0 1 12 3]
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消