Kotlin中的UInt为何仍然包括负数值?

val i: Byte = -1
val m = i.toUInt()           // 仍然是-1
val n = i.toUByte().toInt()  // 这样才能变为正数 255

如上所示 负数直接转换为UInt仍然是负数 只有先转换为UByte再转换为整数才能去掉符号 比java中的Byte.toUnSignedInt()繁琐不说还难以理解为何无符号整型仍然允许符号存在

阅读 2.2k
1 个回答

并不是 -1 啊:https://pl.kotl.in/urH12RJqc

/**
 * You can edit, run, and share this code.
 * play.kotlinlang.org
 */
fun main() {
    val i: Byte = -1
    val m = i.toUInt()           // 仍然是-1
    println(m)
}
4294967295

toUInt

Converts this Byte value to UInt.

If this value is positive, the resulting UInt value represents the same numerical value as this Byte.

The least significant 8 bits of the resulting UInt value are the same as the bits of this Byte value, whereas the most significant 24 bits are filled with the sign bit of this value.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏