为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕无忌1623718 2022-11-28 17:06:10
鉴于: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]


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信