2016-07-29 224 views
2

我是Groovy的新手。當我想要將某些整數轉換爲十六進制字符串時,我嘗試過這樣的代碼:在Groovy中將整數轉換爲十六進制字符串

theNumber.toString(16) 

與我在JavaScript中所做的一樣。 (Groovy就像另一個腳本語言看起來類似於Java,對吧?)

但上面的代碼不工作,因爲我的預期。當數字非常大時,結果是正確的;但大多數時候,它只是返回16.

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

我很困惑爲什麼Groovy行爲這麼奇怪。任何人都可以幫我解釋一下嗎?而且,將整數轉換爲十六進制字符串的最佳方法是什麼?

謝謝。

回答

4

Java不是JavaScript。 Groovy是爲Java平臺構建的語言。 Java代碼也可以直接與Groovy協同工作。所以,你可以使用.toHexString()

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

對於除能用多長時間(9223372036854775807)的數據類型的BigInteger的最大值較大的數字。

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

謝謝您的轉換解決方案。另一個問題是爲什麼'256.toString(16)'返回'16'而不是'100'? – tsh

1

您打電話給的是靜態的toString(int),例如: Integer。​​:

public static String toString(int i) 

返回一個表示指定整數一個字符串對象。該參數被轉換爲帶符號的十進制表示並作爲字符串返回,就好像將參數和基數10作爲toString(int,int)方法的參數一樣給出。

例如爲:

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

所以,你想要的是:

groovy:000> Integer.toString(256,16) 
===> 100 
相關問題