登录
首页 >  Golang >  Go问答

如何获取 big.Int.Bytes() 的长度?

来源:stackoverflow

时间:2024-02-12 12:09:24 484浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何获取 big.Int.Bytes() 的长度?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

给定:

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 返回表示该值所需的最小字节数。

为了将其变成固定长度的字节片,请使用FillBytes方法。您需要确保该值适合提供的字节片,否则会出现混乱。

示例:

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]

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>