问题:比较byte数组的值时:boolean match = ((data[0] & 0xFF) == 0xFE);然后返回真值,但是:boolean match (data[0] == 0xFE);返回的就不是真值,为啥?data这样就会byte数组:data[0] = (byte) 0xFE;
1 回答
心有法竹
TA贡献1866条经验 获得超5个赞
boolean match = ((data[0] & 0xFF) == 0xFE);
这句是因为把0xFF
当做整数来比较,它会自动转换data[0]
为整数型。圆括号里面的0xFE (254)
也会同样转换。 就像你说的data[0]是(byte)0xFE。因此会当做整形0xFE 与整形的0xFE 比较,因此会返回正确结果。
boolean match (data[0] == 0xFE);
比较byte和int0xFE : 254
data[0] = (byte) 0xFE;
是byte类型,值是-2
-2和254值不相等, 所以你比较起来和前面结果会不一样
如果简化比较:
boolean match = (data[0] == (byte)0xFE);
添加回答
举报
0/150
提交
取消