Java 将int转换为字节数组

Java 将int转换为字节数组,java,bit-shift,Java,Bit Shift,我见过的大多数将int转换为字节数组的位移位解决方案如下所示: return new byte [] { (byte) ((i >> 24) & 0xFF), (byte) ((i >> 16) & 0xFF), (byte) ((i >> 8) & 0xFF), (byte) (i & 0xFF); } 为什么&0xFF???&0xFF是冗余的,在给定的情况下没有区别,这是按位的,并且将其余的

我见过的大多数将int转换为字节数组的位移位解决方案如下所示:

return new byte [] {
    (byte) ((i >> 24) & 0xFF),
    (byte) ((i >> 16) & 0xFF),
    (byte) ((i >> 8) & 0xFF),
    (byte) (i & 0xFF);
}

为什么&0xFF???

&0xFF
是冗余的,在给定的情况下没有区别,这是按位的,并且将其余的位转换为0。实际上,如果您将强制转换为
(字节)
,则可能没有必要,由于强制转换执行隐式的
&0xFF
操作。可能重复的可能重复:如果希望使用big-endian。。。编写相同代码的较短方法:
ByteBuffer.allocate(4).putInt(i).array()
同意,还有Graham Griffiths在评论中提出的另一个问题的一些提示。