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

时间:2016-07-29 01:25:07

标签: groovy integer hex tostring

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

theNumber.toString(16)

就像我在JavaScript中所做的那样。 (Groovy就像另一种脚本语言看起来类似于Java,对吗?)

但上面的代码不能像我预期的那样工作。当数字非常大时,结果是正确的;但大多数时候,它只会返回16。

println(256.toString(16)) // 16
println(36893488147419103232.toString(16)) // 20000000000000000

我很困惑为什么Groovy的行为如此奇怪。有人能帮我解释一下吗?并且,将整数转换为十六进制字符串的最佳方法是什么?

感谢。

2 个答案:

答案 0 :(得分:6)

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

Integer.toHexString(256) 
Long.toHexString(28562)

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

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

答案 1 :(得分:1)

您所呼叫的是静态toString(int),例如: Integerdocs

public static String toString(int i)
     

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

E.g:

groovy:000> Integer.toString(16)
===> 16

所以你想要的是:

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