【问题标题】:BigInteger to byte array, with size of bigint at the beginning of arrayBigInteger 到字节数组,数组开头的大小为 bigint
【发布时间】:2015-04-04 15:17:03
【问题描述】:

我想将 BigInteger 写入文件,但我想在它前面加上整数的长度,所以我知道当我再次读取它时它有多长(文件有几个 bigint)

我知道我可以使用bigInteger.toByteArray() 将其转换为字节数组,但是在这个数组前面加上它的长度,我能想到的唯一方法是创建另一个数组并复制它。我不想这样做,因为它基本上会使我编写文件所需的时间增加一倍,并且浪费时间和内存。

还有其他更有效的方法吗?

编辑:查看 cmets - 我这样做是因为我想将多个 bigints 放在一个文件中,因此我可以使用长度作为各种分隔符。

【问题讨论】:

    标签: java arrays biginteger


    【解决方案1】:

    您不必在数组前面添加任何内容。先写长度,再写数组。

    【讨论】:

    • 如何在创建数组之前找到长度?
    • 您不必事先知道长度。 BigInteger.toByteArray 负责创建一个大小合适的数组,将其填满并返回。
    • 但这根本不是我想要的。比如说bigint是256,那么BigInteger.toByteArray返回的字节数组就是00000001 00000000,但是我想要的是00000010 00000001 00000000
    • @hoodakaushal 当然,所以只需获取字节数组,写入其长度,然后写入。将数组临时存储在变量中没有内存开销。
    • 哦,写你的意思是文件。现在说得通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多