android - Kotlin 如何将 Long 转换为 Int?为超出范围的值获取不同的输出
问题描述
我有几行代码可以将Long
值转换为Int
. 据我所知,如果Long
value 大于Int.MAX_VALUE
ie 2147483647
,它将截断Long
value 以给出结果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。
推荐阅读
- python - 带有散景服务器的 Python 回调 - 选择返回空白图的小部件
- bash - 从数组中提取值
- django - 如何在我的 Django 应用程序的“评论”视图中修复此错误?
- c# - 如何将 CultureInfo 的实例从 Angular 传递到 Web API?
- c# - 为什么我在 asp.net 的 POST 中得到空值
- python - urwid 或 curses 中的颜色传递
- java - postForEntity 的 Mockito 测试不起作用
- sql - SQL 查询 - 仅获取价格变化
- javascript - 无法将 XMLHttpRequest 设置为 3 个单独的 API url
- java - CSS 没有找到 JavaFX 规则