Подтвердить что ты не робот

Преобразование long в два int и наоборот

Как преобразовать два 32-битных целых числа (int) в один 64-разрядный long и наоборот?

4b9b3361

Ответ 1

long c = (long)a << 32 | b & 0xFFFFFFFFL;
int aBack = (int)(c >> 32);
int bBack = (int)c;

В Java вам не нужно столько скобок или любой маскировки при обратном вычислении.

Ответ 2

Дюймы в длинные:

long c = ((long)a << 32) | ((long)b & 0xFFFFFFFFL);

Я оставлю это в качестве упражнения для читателя, чтобы выполнить обратный расчет. Но намек есть; используйте больше бит-сдвигов и бит-масок.

(Отредактировано согласно комментарию Т. Мердока)