Kotlin如何将Long转换为Int?获取超出范围值的不同输出

Raj*_*hra 1 android casting long-integer kotlin

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

val num1: Long = 5453448989999998988
val num2: Int = num1.toInt()
Run Code Online (Sandbox Code Playgroud)

num2 = 2041161740

val num1: Long = 5453448989999998
val num2: Int = num1.toInt()
Run Code Online (Sandbox Code Playgroud)

num2 = 165249918

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

Mar*_*eng 8

Kotlin确实会截断您的电话号码,但采用二进制形式:

54534489899999989880100101110101110100010101111011001111001101010011010100000001100二进制的。

然后,它采用低32位:01111001101010011010100000001100那就是您的Int,即2041161740。