在java中反转int中4个字节顺序的最佳方法是什么?
答案 0 :(得分:43)
您可以使用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)
public static int reverse(int i)
上述方法还有一些Long
,Character
和Short
版本,但有些版本特别缺失,例如: Byte.reverse
。您仍然可以执行以下操作:
byte bitsRev = (byte) (Integer.reverse(aByte) >>> (Integer.SIZE - Byte.SIZE));
上面通过将byte aByte
提升为int
并将其反转,然后向右移动适当的距离,最后将其转回byte
来反转float
的位。
如果您想操纵double
或{{1}}的位,可以使用Float.floatToIntBits
和Double.doubleToLongBits
。
答案 1 :(得分:0)
我同意polygenelubricants的答案是最好的。但就在我点击之前,我有以下内容:
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位,并将最低有效字节与结果进行“或”运算。