Как разделить Long на два Ints в Kotlin? - PullRequest
0 голосов
/ 09 ноября 2018

Как я могу разделить Long (64 бита) на два целых (32 бита) в Kotlin?

Я пробовал что-то подобное, но, похоже, это не так:

val id = Integer.MAX_VALUE.toLong() + 2000
val a = id.toInt()
val b = (id shr 32).toInt()

1 Ответ

0 голосов
/ 09 ноября 2018

Все работает нормально. Обратите внимание, что Integer.MAX_VALUE равно 0x7FFFFFFF, когда вы добавляете 2000, оно становится 0x800007CF, которое по-прежнему находится в пределах 32-битного значения, но переполняется до диапазона отрицательных чисел, когда интерпретируется как 32-разрядное целое число со знаком. Следовательно, a является отрицательным Int, а b является 0

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...