Я ищу аналогичную функцию для Java Integer.toHexString()
в Котлине. Есть ли что-то встроенное, или нам нужно вручную написать функцию для преобразования Int
в String
?Как преобразовать Int в Hex String в Kotlin?
ответ
Что касается Котлин 1.0.6, kotlin-stdlib
не имеет функции для этого, и один должен использовать java.lang.*
классы для выполнения преобразования:
val hexString = java.lang.Integer.toHexString(i)
Но источники тока Котлин contain эту функцию:
@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 наряду со многими другими, в том числе для парсинга чисел с пользовательским основанием (хотя функции не имеют особого значения для hex). Тогда вы будете в состоянии назвать его так, чтобы получить шестнадцатеричную строку:
myInt.toString(16)
Заметим, однако, что это все равно будет отличаться от Integer.toHexString()
, потому что последний выполняет беззнаковое преобразование:
println((-50).toString(16)) // -32
println(Integer.toHexString(-50)) // ffffffce
Хорошая мысль о беззнаковом преобразовании. – milosmns
Примечание: Я знаю, что я могу использовать класс Integer из Java :) Я ищу чистый подход Котлина, если он доступен. – milosmns
Большая часть библиотеки kotlin просто состоит в предоставлении методов расширения поверх стандартных классов Java. Язык и библиотека предназначены для упрощения использования классов Java. Почему вы не используете Integer.toHexString? Что принесет альтернативная реализация, кроме избыточности? –
@JBNizet Я не против использования 'Integer.toHexString()' - например, взгляните на ответ, который приведен ниже. Короткая и доступная из любого Int. Я могу использовать что-либо действительно для выполнения своей задачи, но я просто искал что-то похожее на Котлин, если оно доступно. – milosmns