I came across a situation just recently in which an unsigned integer would have been really useful (e.g. any negative value would not make sense etc.). Surprisingly, I discovered that Kotlin does not support unsigned integers - and there doesn't appear to be anything else out there about why (even though I've looked).
Am I missing something?
Unsigned counterparts of Byte
, Short
, Int
and Long
do exist in Beta since Kotlin 1.3 and are stable as of Kotlin 1.5:
From the docs:
kotlin.UByte
: an unsigned 8-bit integer, ranges from 0 to 255
kotlin.UShort
: an unsigned 16-bit integer, ranges from 0 to 65535
kotlin.UInt
: an unsigned 32-bit integer, ranges from 0 to 2^32 - 1
kotlin.ULong
: an unsigned 64-bit integer, ranges from 0 to 2^64 - 1
Usage
// You can define unsigned types using literal suffixes
val uint = 42u
// You can convert signed types to unsigned and vice versa via stdlib extensions:
val int = uint.toInt()
val uint = int.toUInt()