具有非常大的二进制数的Java BigInteger

时间:2013-10-15 09:53:07

标签: java binary biginteger randomaccessfile

我有2个非常大的二进制数(144位)。我想在不同的RandomAccessFiles中编写它们然后将文件读入内存并检查哪个数字更大。 到目前为止我做了什么:

1。 我创建了一个BigInteger:

BigInteger big = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);

2。 我得到了longValue:

big.longValue();   

3 ..我写了一个长的randomaccessfile,读取文件,比较长篇等...

但如果二进制文件长于'Long.maxvalue',我所做的就错了,对吗?

那么有人有任何建议吗?

我可以处理大二进制数吗?

3 个答案:

答案 0 :(得分:1)

尝试比较如下

           BigInteger big1 = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);
           BigInteger big2 = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);
           int result =big1.compareTo(big2);
           System.out.println(result);

答案 1 :(得分:0)

  1. 消除初始零

  2. 将这些数字转换为字符串

  3. if(String1.length!= String.length)最大数量是一个
  4. 其他

    从头开始逐个数字并进行比较。

    if(string1 digit x = 0& string 2 digit x = 0)转到下一个数字

    if(string1数字x = 1& string 2数字x = 0)字符串1很大

    if(string1数字x = 0& string 2数字x = 1)字符串2很大

答案 2 :(得分:0)

显然,你的号码太长了。

我建议您使用BigInteger.getByteArray()将BigInteger导出为字节数组,然后将其保存到文件中(这就是我们在加密中所做的事情)。

此外,可以使用其构造函数将字节数组转换回BigInteger。