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

标签 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

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

最佳答案

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

54534489899999989880100101110101110100010101111011001111001101010011010100000001100二进制。

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

关于android - Kotlin 如何将 Long 转换为 Int?为超出范围的值获取不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056846/

相关文章:

android - 使用对话框截取屏幕截图

c# - Unity (C#) -> Kotlin <- 协程

c# - 为什么向下转换在运行时失败

java - 下面的Java代码是如何工作的?它是一种隐式类型转换吗?

javascript - JavaScript 数组初始化之前的 "var"指的是什么,是列表的元素还是数组本身?

android - 合并两个 Observable 流时如何发出最终值?

android - 致命信号 11 (SIGSEGV)、代码 1 (SEGV_MAPERR)、故障地址 0xe9103aa560080 in tid 31072 (ReferenceQueueD)、pid 31058

android - 如何从 SQLite 将一个用户数据查看到 TextView 中?

kotlin - 为什么我的 Kotlin 可比较器无法进行正确的相等比较?

Java 和 Kotlin 组合构建错误(Duplicate Zip Entry)