web-dev-qa-db-fra.com

Comment convertir Int en chaîne hexadécimale dans Kotlin?

Je recherche une fonction similaire à la Integer.toHexString() de Java dans Kotlin. Y a-t-il quelque chose de intégré ou devons-nous écrire manuellement une fonction pour convertir Int en String?

29
milosmns

Comme pour Kotlin 1.0.6, kotlin-stdlib N'a pas de fonctions pour cela, et il faut utiliser les classes Java.lang.* Pour faire la conversion:

val hexString = Java.lang.Integer.toHexString(i)

Mais les sources actuelles de Kotlin contiennent cette fonction:

@SinceKotlin("1.1")
@kotlin.internal.InlineOnly
public inline fun Int.toString(radix: Int): String = 
    Java.lang.Integer.toString(this, checkRadix(radix))

Apparemment, il est susceptible d'être ajouté au stdlib de Kotlin 1.1 avec de nombreux autres, y compris ceux pour l'analyse des nombres avec radix personnalisé (bien qu'il n'y ait pas de fonctions spécialement pour hex). Ensuite, vous pourrez l'appeler comme ceci pour obtenir une chaîne hexadécimale:

myInt.toString(16)

Notez cependant que ce sera toujours différent de Integer.toHexString(), car ce dernier effectue la conversion non signée:

println((-50).toString(16)) // -32
println(Integer.toHexString(-50)) // ffffffce
48
hotkey

Vous pouvez simplement le faire comme ceci: "%x".format(1234)

2
M.Sameer

Si vous devez ajouter zéro avant les octets dont moins de 10 (hex), par exemple vous avez besoin de la chaîne - "0E" alors utilisez: "%02x".format(14)

2
Artem Botnev