Android Kotlin如何将Long转换为Int?为超出范围的值获取不同的输出
我有几行代码将Long值转换为Int。我知道如果Long值大于Int.MAX_值,即2147483647,它将截断Long值,以Int表示结果。我尝试了不同的示例:Android Kotlin如何将Long转换为Int?为超出范围的值获取不同的输出,android,kotlin,casting,long-integer,Android,Kotlin,Casting,Long Integer,我有几行代码将Long值转换为Int。我知道如果Long值大于Int.MAX_值,即2147483647,它将截断Long值,以Int表示结果。我尝试了不同的示例: val num1: Long = 5453448989999998988 val num2: Int = num1.toInt() 给予 num2=2041161740 给予 num2=165249918 两个输入都超出范围。但我的问题是,为什么我会得到不同的输出,因为我希望得到截断的输出。Kotlin确实会截断您的数字,但以二进
val num1: Long = 5453448989999998988
val num2: Int = num1.toInt()
给予
num2=2041161740
给予
num2=165249918
两个输入都超出范围。但我的问题是,为什么我会得到不同的输出,因为我希望得到截断的输出。Kotlin确实会截断您的数字,但以二进制形式: 545344899998988是二进制的0100101110101110100010101111001111001101010011010100000001100
然后它取其较低的32位:01111001010100110100000001100,这是您的整数,即2041161740。Kotlin确实会截断您的数字,但以二进制形式: 545344899998988是二进制的0100101110101110100010101111001111001101010011010100000001100 然后它取其较低的32位:01111001010100110100000001100,这是您的Int,即2041161740。将long-long转换为Int可能导致Int所能容纳的位溢出。这就解释了为什么会得到不同的输出。将long-long转换为Int可能会导致Int所能容纳的位溢出。这就解释了为什么你会得到不同的输出。
val num1: Long = 5453448989999998
val num2: Int = num1.toInt()