我需要使用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”
我缺少什么?
答案 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
)
您应该使用标准BigDecimal
或BigInteger
。