我有2个非常大的二进制数(144位)。我想在不同的RandomAccessFiles中编写它们然后将文件读入内存并检查哪个数字更大。 到目前为止我做了什么:
1。 我创建了一个BigInteger:
BigInteger big = new BigInteger("01110101010010101010111100010101010101010101010110101010101010101010010101010101010101010101010101111010010101010",2);
2。 我得到了longValue:
big.longValue();
3 ..我写了一个长的randomaccessfile,读取文件,比较长篇等...
但如果二进制文件长于'Long.maxvalue',我所做的就错了,对吗?
那么有人有任何建议吗?
我可以处理大二进制数吗?
答案 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)
消除初始零
将这些数字转换为字符串
其他
从头开始逐个数字并进行比较。
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。