如何保留 big.Int.Bytes() len?

鉴于:


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不允许这样做。怎样才能把它保存下来呢?


慕无忌1623718
浏览 137回答 1
1回答

慕侠2389804

该Int类型在内部不保留构造它的字节,并Bytes返回表示该值所需的最小字节数。为了将它变成一个固定长度的字节片,使用FillBytes方法。您需要确保该值适合提供的字节片,否则会出现 panic。例子:package mainimport (    "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]6605168611[0 0 0 0 0 1 12 3]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go