1

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

1. 我创建了一个 BigInteger:

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

2. 我得到了 longValue:

big.longValue();   

3 ..我将long写入随机访问文件,读取文件,比较long等......

但是,如果二进制文件比“Long.maxvalue”长,我所做的是错误的,对吗?

那么有人有什么建议吗?

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

4

3 回答 3

1

尝试如下比较

           BigInteger big1 = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);
           BigInteger big2 = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);
           int result =big1.compareTo(big2);
           System.out.println(result);
于 2013-10-15T09:57:37.747 回答
0
  1. 消除初始零

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

  3. if(String1.length !=String.length ) 最大数是较长的一个

别的

从头开始一位一位地取并比较。

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

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

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

于 2013-10-15T10:11:38.900 回答
0

很明显,你的号码太长了。

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

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

于 2013-10-15T10:19:26.350 回答