2017-01-14 108 views
11

Szukam podobnej funkcji do Javy Integer.toHexString() w Kotlin. Czy jest coś wbudowanego, lub musimy ręcznie napisać funkcję, aby przekonwertować Int na String?Jak przekonwertować Int na string szesnastkowy w Kotlin?

+0

Uwaga: zdaję sobie sprawę, że mogę używać klasy 'Integer' z Javy :) Szukam czystej metody Kotlin, jeśli jest dostępna. – milosmns

+0

Większość biblioteki kotlin polega po prostu na udostępnianiu metod rozszerzenia na standardowych klasach Java. Język i biblioteka zostały zaprojektowane tak, aby ułatwić korzystanie z klas Java. Dlaczego nie używasz Integer.toHexString? Co przyniesie wdrożenie alternatywne, z wyjątkiem nadmiarowości? –

+0

@JBNizet Nie jestem przeciwko używaniu 'Integer.toHexString()' - Na przykład spójrz na odpowiedź, której @hotkey podano poniżej. Krótki i bezpośrednio dostępny z dowolnego Int. Mogę użyć czegokolwiek, by ukończyć moje zadanie, ale szukałem czegoś podobnego do Kotlina, jeśli to możliwe. – milosmns

Odpowiedz

18

chodzi o Kotlin 1.0.6 kotlin-stdlib nie posiada funkcje do tego i trzeba użyć java.lang.* klas zrobić konwersję:

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

ale obecne źródła Kotlin contain Ta funkcja:

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

Pozornie najprawdopodobniej zostanie dodana do strunnika Kotlin 1.1 wraz z wieloma innymi, w tym do przetwarzania liczb z niestandardową podstawką (choć nie ma specjalnych funkcji dla heksadecymalnych). Wtedy będzie można nazwać go tak, aby ciąg szesnastkowy:

myInt.toString(16) 

jednak pamiętać, że będzie to jeszcze inaczej z Integer.toHexString(), ponieważ ten ostatni wykonuje niepodpisane konwersji:

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

Dobra uwaga o niepodpisanej konwersji. – milosmns