为了账号安全,请及时绑定邮箱和手机立即绑定

android中比较byte值的问题

android中比较byte值的问题

犯罪嫌疑人X 2019-03-13 18:15:57
问题:比较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);


查看完整回答
反对 回复 2019-04-26
  • 1 回答
  • 0 关注
  • 788 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信