2017-06-17 2 views
3

Wie in 0xFF0000FF An integer literal does not conform to the expected type kotlin.Int eine andere Frage gesehenDeklarieren Byte in Kotlin tut Compiler-Fehler 'Die Ganzzahlliteral entspricht nicht dem erwarteten Typ Byte'

ich Wert 0xFF erklärt als Byte

val b:Byte = 0xFF

Empfangen Das Integer-Literal entspricht nicht dem erwarteten Typ Byte Kompilierfehler

Da ich Ahnung von kotlin.Byteunterzeichnet Byte

Wie erklärt Byte in Kotlin mit 0x00-0xFF Byte ohne Vorzeichen wie Byte b = 0xFF?

.

.

Wenn Sie Instant-Compiler für die Prüfung und Antwort:

rextester, try.kotlinlang.org

Antwort

4

Kotlin automatisch konvertiert nicht zwischen Nummerntypen.

Wenn Sie val b:Byte = 0xFF.toByte() tun, dann kompiliert es und ergibt ein Byte mit dem Wert -1.

Wenn Sie das unsigned Byte-Wert halten, dann müssen Sie es als Char speichern, aber Sie werden es auf eine andere Art umwandeln müssen es als eine Zahl drucken:

val b = 0xFF.toChar() 
println(b.toInt()) 
+0

Der Wert '- 1 'ist korrekt, obwohl ... –

+0

Ja, aber die Frage erwähnt, deklariert es mit einem Byte ohne Vorzeichen habe ich den Teil über die Verwendung von 'Char' hinzugefügt. '-1' wäre die richtige Antwort mit vorzeichenbehafteten Bytes. – Kiskae

+0

'0xFF.toByte()' hat das Ding gemacht. schätzen. – nyconing

Verwandte Themen