groovy将hex转换为dec

时间:2014-02-26 09:59:34

标签: java groovy

我需要使用groovy转换hex-> dec,我有

def hex = 0x15B546EF13361F7B530C59332C60C2CE
int i= Integer.parseInt(hex,16);

当我运行它时,错误实际上显示了我需要的值,但我无法得到它

  

groovy.lang.MissingMethodException:没有方法签名:static   java.lang.Integer.parseInt()适用于参数类型:   (java.math.BigInteger,java.lang.Integer)值:   [ 28855032353026779507009821653742961358 ,...]可能的解决方案:   parseInt(java.lang.String,int),parseInt(java.lang.String)错误   line:4

如果我将十六进制作为字符串给出错误建议:

def hex = '0x15B546EF13361F7B530C59332C60C2CE'
  

java.lang.NumberFormatException:对于输入字符串:   “0x15B546EF13361F7B530C59332C60C2CE”

我缺少什么?

1 个答案:

答案 0 :(得分:3)

def hex = 0x15B546EF13361F7B530C59332C60C2CE
int i = hex // int i = (hex as int)
println i

Groovy默认在BigDecimal s中存储号码。 0x...表示法只是编译器的BigDecimal的不同表示。

但正如你所看到的:你的十六进制数字非常大 - 所以你得到的价值是错误的。 int类型无法存储如此大的价值:Integer.MAX_VALUE == 2147483647(偶long类型:Long.MAX_VALUE == 9223372036854775807) 您应该使用标准BigDecimalBigInteger