Как преобразовать Int в Hex String в Kotlin?

Я ищу аналогичную функцию для Java Integer.toHexString() в Котлине. Есть ли что-то встроенное, или нам нужно вручную написать функцию для преобразования Int в String?

Ответ 1

Что касается Kotlin 1.0.6, kotlin-stdlib не имеет для этого функций, и для преобразования необходимо использовать классы java.lang.*:

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

Но текущие источники Kotlin содержат эту функцию:

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

Похоже, что он, скорее всего, будет добавлен в Kotlin 1.1 stdlib наряду со многими другими, в том числе для разбора чисел с помощью настраиваемого радиуса (хотя для функций без гексагона нет никаких функций). Затем вы сможете вызвать его так, чтобы получить шестнадцатеричную строку:

myInt.toString(16)

Обратите внимание, однако, что это будет по-прежнему отличаться от Integer.toHexString(), потому что последнее выполняет беззнаковое преобразование:

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

Ответ 2

Вы можете просто сделать это так: "%x".format(1234)

Ответ 3

Если вам нужно добавить ноль перед байтами, которые меньше 10 (шестнадцатеричные), например, вам нужна строка - "0E", тогда используйте: "%02x".format(14)