2016-07-29 15 views
2

Ich bin neu in Groovy. Wenn ich irgendeine Integer-Zahl in Hexadezimalstring konvertieren möchte, habe ich Codes wie folgt ausprobiert:Konvertiere Ganzzahl in hexadezimal in Groovy

als was ich in JavaScript getan habe. (Groovy ist wie eine andere Skriptsprache ähnlich wie Java, oder?)

Aber der Code oben funktioniert nicht wie erwartet. Wenn die Zahl sehr groß ist, ist das Ergebnis korrekt; aber die meiste Zeit, es gibt nur 16 zurück.

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

Ich bin verwirrt, warum Groovy Verhalten so seltsam. Kann mir jemand helfen, das zu erklären? Und was ist der beste Weg, eine Integer-Zahl in eine Hexadezimalzahl zu konvertieren?

Danke.

Antwort

4

Java ist kein JavaScript. Groovy ist eine Sprache, die für die Java-Plattform entwickelt wurde. Java-Code funktioniert auch direkt mit Groovy. So können Sie mit .toHexString()

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

Bei Zahlen größer als der Maximalwert von langen (9223372036854775807) dem BigInteger-Datentyp verwendet werden.

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

Sie für Ihre Lösung Danke für die Umwandlung. Eine andere Frage ist, warum '256.toString (16) '' 16' anstelle von '100' zurückgibt? – tsh

1

Was Sie anrufen, ist die statische toString(int) von z. Integer. docs:

public static String toString(int i) 

Gibt ein String-Objekt die spezifizierte ganze Zahl ist. Das Argument wird in eine vorzeichenbehaftete Dezimaldarstellung konvertiert und als Zeichenfolge zurückgegeben, genau so, als ob das Argument und das Radix 10 als Argumente für die toString (int, int) -Methode verwendet würden.

Z. B .:

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

Also, was Sie wollen, ist:

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