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

时间:2019-07-16 12:03:53

标签: android kotlin casting long-integer

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

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

给予

  

num2 = 2041161740

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

给予

  

num2 = 165249918

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

1 个答案:

答案 0 :(得分:8)

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

54534489899999989880100101110101110100010101111011001111001101010011010100000001100的二进制文件。

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