Ответ 1
Вы можете использовать Integer.reverseBytes
:
int numBytesReversed = Integer.reverseBytes(num);
Там также Integer.reverse
, который меняет каждый бит int
int numBitsReversed = Integer.reverse(num);
java.lang.Integer
Ссылки API
-
public static int reverseBytes(int i)
- Возвращает значение, полученное путем изменения порядка байтов в двух дополнительных представлениях указанного значения int.
-
public static int reverse(int i)
- Возвращает значение, полученное путем изменения порядка бит в двоичном представлении с двумя дополнительными значениями указанного значения int.
Решение для других примитивных типов
Существуют также некоторые версии Long
, Character
и Short
указанных выше методов, но некоторые из них заметно отсутствуют, например. Byte.reverse
. Вы все еще можете делать такие вещи:
byte bitsRev = (byte) (Integer.reverse(aByte) >>> (Integer.SIZE - Byte.SIZE));
Вышеописанная информация отменяет биты byte aByte
, продвигая ее на int
и меняя ее, а затем сдвигая вправо на соответствующее расстояние и, наконец, отбрасывая ее обратно на byte
.
Если вы хотите манипулировать битами float
или double
, есть Float.floatToIntBits
и Double.doubleToLongBits
, который вы можете использовать.