此代码测试到底是什么?这是一个ID3标记库。我刚刚开始学习“和”。据我所知,“& 0x0F”将位移到右边。
非常感谢您对此if语句提供的任何说明。
protected static final int FLAGS_OFFSET = 5;
if ((bytes[FLAGS_OFFSET] & 0x0F) != 0) throw new UnsupportedTagException("Unrecognised bits in header");
第5个字节包含一个标志:
ID3v2 flags %abc00000
答案 0 :(得分:1)
如果两个操作数在该位中都设置为1,则&
的结果中的位为1,例如:
01010101 & 00001111 ========== 00000101
0x0F
是二进制的1111
。 (这被称为"掩码"。)所以表达式说"如果在索引5的字节中设置了最低4位中的任何一个,则抛出异常"。