Java FindBugs:INT\u VACUOUS\u BIT\u操作

Java FindBugs:INT\u VACUOUS\u BIT\u操作,java,bit-manipulation,findbugs,Java,Bit Manipulation,Findbugs,为了将int转换为IP字符串,我在 但是Eclipse中的FindBugs会生成错误:INT\u VACUOUS\u BIT\u操作 INT_VACUOUS_BIT_操作:不做任何有意义工作的位操作 为什么会这样以及如何修复它?我怀疑这是因为如果您也要强制转换到字节,则不需要&BYTE\u掩码。我假设BYTE\u MASK是0xff。。。在这种情况下,这基本上是毫无意义的。只是铸造也会有同样的效果 发件人: 有符号整数到整数类型T的缩小转换只会丢弃n个最低阶位以外的所有位,其中n是用于表示类型T

为了将int转换为IP字符串,我在

但是
Eclipse
中的
FindBugs
会生成错误:
INT\u VACUOUS\u BIT\u操作

INT_VACUOUS_BIT_操作:不做任何有意义工作的位操作


为什么会这样以及如何修复它?我怀疑这是因为如果您也要强制转换到
字节,则不需要
&BYTE\u掩码。我假设
BYTE\u MASK
是0xff。。。在这种情况下,这基本上是毫无意义的。只是铸造也会有同样的效果

发件人:

有符号整数到整数类型T的缩小转换只会丢弃n个最低阶位以外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关数值大小的信息外,这可能导致结果值的符号与输入值的符号不同


我怀疑这是因为如果您也要强制转换到
字节
,则不需要
&BYTE\u掩码。我假设
BYTE\u MASK
是0xff。。。在这种情况下,这基本上是毫无意义的。只是铸造也会有同样的效果

发件人:

有符号整数到整数类型T的缩小转换只会丢弃n个最低阶位以外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关数值大小的信息外,这可能导致结果值的符号与输入值的符号不同

private static final byte BYTE_MASK = (byte)0xff;

protected byte[] unpack(int bytes) {
    return new byte[] {
        (byte)((bytes >>> 24) & BYTE_MASK),
        (byte)((bytes >>> 16) & BYTE_MASK),
        (byte)((bytes >>>  8) & BYTE_MASK),
        (byte)((bytes       ) & BYTE_MASK)
   };
}