如何将两个BigInteger变量视为未签名



我有两个biginteger变量,其值是从8个字节数组初始化的:

maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000

我想使用一种返回Maxone大于Midone的Biginteger比较方法。

但是,我不断相反。即Midone大于Maxone。

在内部,我可以看到它们被存储为:

maxone:

mag[0]: 1
signum: -1

midone

mag[0]: 7FFF7FFF
mag[1]: 7FFF7FFF
mag[2]: 7FFF7FFF
mag[3]: 7FFF8000
signum: -1

我认为,当两个都具有signum = -1时,"较大的绝对"值比"较小的绝对"值(例如-3都比-1小(。

但是出于某种原因,maxOne.compareTo(midOne)返回-1。

检查他们的BigInteger.doubleValue()时,我看到

maxOne = -1.0
midOne = -1.7013858727242528 E38

即使compareTo((使用doubleValue((进行比较,maxone> midone。

那么,为什么比较返回相反的?

无论哪种方式,我都有兴趣将它们与两个无符号整数进行比较。有办法做到这一点吗?

我建议将零字节放在最重要的位置。因此,在创建BigInteger时,没有任何迹象可以蠕动。

最新更新