Avec Integer.toString(1234567, 16).toUpperCase() // output: 12D68
pourrait aider à convertir une chaîne Int
en chaîne hexadécimale.
Comment faire la même chose avec Long?
Long.toString(13690566117625, 16).toUpperCase() // but this will report error
Vous recherchez RichLong.toHexString
:
scala> 13690566117625L.toHexString
res0: String = c73955488f9
Et la variante majuscule:
scala> 13690566117625L.toHexString.toUpperCase
res1: String = C73955488F9
Ceci est également disponible pour Int
via RichInt.toHexString
:
scala> 42.toHexString
res4: String = 2a
val bigNum: Long = 13690566117625L
val bigHex: String = f"$bigNum%X"
Utilisez %X
pour obtenir des lettres hexadécimales majuscules et %x
si vous voulez des minuscules.
Vous avez plusieurs erreurs. Tout d’abord, le nombre 13690566117625
est trop grand pour tenir dans une int
et vous devez donc ajouter un préfixe L
pour indiquer qu’il s’agit d’un littéral long
. Deuxièmement, Long
n'a pas de méthode toString
qui prend une base (contrairement à Integer
).
Solution:
val x = 13690566117625L
x.toHexString.toUpperCase
J'ai trouvé que f"0x$int_val%08X"
ou f"0x$long_val%16X"
fonctionnait très bien lorsque vous souhaitez aligner une valeur sur des zéros non significatifs.
scala> val i = 1
i: Int = 1
scala> f"0x$i%08X"
res1: String = 0x00000001
scala> val i = -1
i: Int = -1
scala> f"0x$i%08X"
res2: String = 0xFFFFFFFF
scala> val i = -1L
i: Long = -1
scala> f"0x$i%16X"
res3: String = 0xFFFFFFFFFFFFFFFF