2017-01-14 7 views
11

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

+0

Примечание: Я знаю, что я могу использовать класс Integer из Java :) Я ищу чистый подход Котлина, если он доступен. – milosmns

+0

Большая часть библиотеки kotlin просто состоит в предоставлении методов расширения поверх стандартных классов Java. Язык и библиотека предназначены для упрощения использования классов Java. Почему вы не используете Integer.toHexString? Что принесет альтернативная реализация, кроме избыточности? –

+0

@JBNizet Я не против использования 'Integer.toHexString()' - например, взгляните на ответ, который приведен ниже. Короткая и доступная из любого Int. Я могу использовать что-либо действительно для выполнения своей задачи, но я просто искал что-то похожее на Котлин, если оно доступно. – milosmns

ответ

18

Что касается Котлин 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 
+0

Хорошая мысль о беззнаковом преобразовании. – milosmns

Смежные вопросы