我试图对一个大的int数进行计算,然后将结果转换为字节数组,但我无法弄清楚如何这样做,这就是我到目前为止的地方。任何人都有任何想法
sum := big.NewInt(0)
for _, num := range balances {
sum = sum.Add(sum, num)
}
fmt.Println("total: ", sum)
phrase := []byte(sum)
phraseLen := len(phrase)
padNumber := 65 - phraseLen
答案 0 :(得分:4)
尝试使用Int.Bytes()
获取字节数组表示,并使用Int.SetBytes([]byte)
设置字节数组中的值。例如:
x := new(big.Int).SetInt64(123456)
fmt.Printf("OK: x=%s (bytes=%#v)\n", x, x.Bytes())
// OK: x=123456 (bytes=[]byte{0x1, 0xe2, 0x40})
y := new(big.Int).SetBytes(x.Bytes())
fmt.Printf("OK: y=%s (bytes=%#v)\n", y, y.Bytes())
// OK: y=123456 (bytes=[]byte{0x1, 0xe2, 0x40})
请注意,大数字的字节数组值是一个紧凑的机器表示,不应该被误认为是字符串值,可以通过常用的String()
方法(或Text(int)
针对不同的基数来检索) )并通过SetString(...)
方法从字符串值设置:
a := new(big.Int).SetInt64(42)
a.String() // => "42"
b, _ := new(big.Int).SetString("cafebabe", 16)
b.String() // => "3405691582"
b.Text(16) // => "cafebabe"
b.Bytes() // => []byte{0xca, 0xfe, 0xba, 0xbe}