Каждый int
- это число, это не двоичное, шестнадцатеричное или десятичное число, это просто число. оператор (num1 << 24) | (num2 << 16) | (num3 << 8) | num4;
представляет собой двоичную манипуляцию 4 int
s в другой тип int. Он не меняет представление nirbinary
на двоичное, поскольку nirbinary не имеет представления, потому что (опять же) это просто число.
Integer.toBinaryString(nirbinary)
возвращает двоичное представление nirbinary
, что означает "как будет выглядеть nibinary в base-2".
Если у вас есть String, представляющая двоичное представление числа, вы можете получить его значение, используя Integer.parseint(yourbinaryrepresentation, yourbase);
, например - Integer.parseint(nir, 2);
И еще одна вещь:
Вы не всегда можете вернуть одно из чисел обратно из nirbinary, так как вы выполнили необратимые манипуляции с битами, например:
int i1 = 5; //binary 0101
int i2 = 4; //binary 0100
int i3 = i1 | i2; //binary 0101
вы не можете распознать каждую из ваших переменных (i1, i2), так как они имеют общий бит, i3 мог быть результатом or
на двух других числах:
int i1 = 1; //binary 0101
int i2 = 4; //binary 0100
int i3 = i1 | i2; //binary 0101
в вашем случае, , если каждое число меньше 256, вы можете изменить его, выполнив следующую операцию:
int myoldnumber = (nirbinary >> previousShift) & 0xff;
например, чтобы получить num1
, вы можете сделать:
int retrievedNum1 = (nirbinary >> 24) & 0xff;