在Groovy中将整数转换为十六进制字符串

在Groovy中将整数转换为十六进制字符串,groovy,integer,hex,tostring,Groovy,Integer,Hex,Tostring,我是Groovy的新手。当我想将一些整数转换为十六进制字符串时,我尝试过如下代码: theNumber.toString(16) 就像我在JavaScript中所做的那样。(Groovy就像另一种脚本语言,看起来与Java相似,对吗?) 但是上面的代码没有像我预期的那样工作。当数值很大时,结果是正确的;但大多数时候,它只是返回16 println(256.toString(16)) // 16 println(36893488147419103232.toString(16)) // 2000

我是Groovy的新手。当我想将一些整数转换为十六进制字符串时,我尝试过如下代码:

theNumber.toString(16)
就像我在JavaScript中所做的那样。(Groovy就像另一种脚本语言,看起来与Java相似,对吗?)

但是上面的代码没有像我预期的那样工作。当数值很大时,结果是正确的;但大多数时候,它只是返回16

println(256.toString(16)) // 16
println(36893488147419103232.toString(16)) // 20000000000000000
我不明白为什么常规行为如此奇怪。有人能帮我解释一下吗?那么,将整数转换为十六进制字符串的最佳方法是什么

谢谢。

Java不是JavaScript。 Groovy是为Java平台构建的语言。 Java代码也可以直接与Groovy一起使用。所以您可以使用.toHexString()

对于大于long(9223372036854775807)最大值的数字,可以使用BigInteger数据类型

String bigInt = new BigInteger("36893488147419103232").toString(16);

您正在调用的是静态
toString(int)
,例如
Integer

返回表示指定整数的字符串对象。参数转换为带符号的十进制表示形式并作为字符串返回,就像参数和基数10作为toString(int,int)方法的参数提供一样

例如:

所以你想要的是:

groovy:000> Integer.toString(256,16)
===> 100

感谢您提供的转换解决方案。另一个问题是为什么
256.toString(16)
返回
16
而不是
100
public static String toString(int i)
groovy:000> Integer.toString(16)
===> 16
groovy:000> Integer.toString(256,16)
===> 100