Какой лучший способ изменить порядок 4 байтов в int в java??
Лучший способ обратного байта в int в java
Ответ 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, который вы можете использовать.
См. также
Ответ 2
Я согласен с тем, что ответ полигеновых смазочных материалов является лучшим. Но как раз перед этим я получил следующее:
int reverse(int a){
int r = 0x0FF & a;
r <<= 8; a >>= 8;
r |= 0x0FF & a;
r <<= 8; a >>= 8;
r |= 0x0FF & a;
r <<= 8; a >>= 8;
r |= 0x0FF & a;
return r;
}
сдвиг входного права, выход остается по 8 бит каждый раз и OR'ing наименее значимого байта к результату.