我有几行代码将Long
值转换为Int
。据我所知,如果Long
值大于然后,Int.MAX_VALUE
即2147483647
它将截断Long
值以给出结果Int
。我尝试了不同的示例:
val num1: LOng= 5453448989999998988 val num2: Int = num1.toInt()
给
num2 = 2041161740
val num1: LOng= 5453448989999998 val num2: Int = num1.toInt()
给
num2 = 165249918
两个输入都超出范围。但是我的问题是,为什么我期望截断的输出会得到不同的输出。
Kotlin确实会截断您的电话号码,但采用二进制形式:
5453448989999998988
是0100101110101110100010101111011001111001101010011010100000001100
二进制的。
然后,它采用低32位:01111001101010011010100000001100
那就是您的Int
,即2041161740。