Ответ 1
long c = (long)a << 32 | b & 0xFFFFFFFFL;
int aBack = (int)(c >> 32);
int bBack = (int)c;
В Java вам не нужно столько скобок или любой маскировки при обратном вычислении.
Как преобразовать два 32-битных целых числа (int
) в один 64-разрядный long
и наоборот?
long c = (long)a << 32 | b & 0xFFFFFFFFL;
int aBack = (int)(c >> 32);
int bBack = (int)c;
В Java вам не нужно столько скобок или любой маскировки при обратном вычислении.
Дюймы в длинные:
long c = ((long)a << 32) | ((long)b & 0xFFFFFFFFL);
Я оставлю это в качестве упражнения для читателя, чтобы выполнить обратный расчет. Но намек есть; используйте больше бит-сдвигов и бит-масок.
(Отредактировано согласно комментарию Т. Мердока)