比较十六进制字符串和双精度字符串

Comparing a Hex String with a Double

我正在尝试在条件语句中比较十六进制字符串和双精度字符串。我已经从字节数组转换为十六进制字符串。

double x = (Math.pow(2, 256));
byte[] h = null;
...
String hexString = bytesToHex(h); //converts byte array to hex string
double doubleValueOfHex = Double.valueOf(hexString); //convert hex string to double

然后我想做这样的事情...

if (doubleValueOfHex < x) {
...
} else {
...

我已经尝试将它们都转换为 BigDecimal 但我仍然 运行 遇到问题,

例如,如果我将 xhexString 转换为 BigDecimal

BigDecimal a = new BigDecimal(hexString);
BigDecimal b = new BigDecimal(x);

if (a < b) {
...
} else {
...

它只是说运算符“<”对于参数类型是未定义的

感谢您的帮助

BigDecimals 不是基元,因此您不能使用“<”,但它们实现了 Comparable 接口。所以你的代码应该是这样的:

if (a.compareTo(b) < 0) {
  ....
 }

参见:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#compareTo(java.math.BigDecimal)