如何保留 big.Int.Bytes() len?
How can I preserve 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
不允许。怎么还能保存下来呢?
Int
类型在内部不保留构造它的字节,Bytes
returns 表示值所需的最小字节数。
为了将其变成固定长度的字节片,使用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]
鉴于:
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
不允许。怎么还能保存下来呢?
Int
类型在内部不保留构造它的字节,Bytes
returns 表示值所需的最小字节数。
为了将其变成固定长度的字节片,使用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]