首页 > 解决方案 > Kotlin 如何将 Long 转换为 Int?为超出范围的值获取不同的输出

问题描述

我有几行代码可以将Long值转换为Int. 据我所知,如果Longvalue 大于Int.MAX_VALUEie 2147483647,它将截断Longvalue 以给出结果Int。我尝试了不同的例子:

val num1: Long = 5453448989999998988
val num2: Int = num1.toInt()

num2 = 2041161740

val num1: Long = 5453448989999998
val num2: Int = num1.toInt()

num2 = 165249918

两个输入都超出范围。但我的问题是为什么我得到不同的输出,因为我期望截断输出。

标签: androidkotlincastinglong-integer

解决方案


Kotlin 确实会截断您的数字,但是以二进制形式:

54534489899999989880100101110101110100010101111011001111001101010011010100000001100二进制的。

然后它取它的低 32 位:01111001101010011010100000001100这就是你的Int,即 2041161740。


推荐阅读