android中比较byte值的问题

问题:

比较byte数组的值时:

boolean match = ((data[0] & 0xFF) == 0xFE);

然后返回真值,但是:

boolean match (data[0] == 0xFE);

返回的就不是真值,为啥?

data这样就会byte数组:

data[0] = (byte) 0xFE;


犯罪嫌疑人X
浏览 789回答 1
1回答

心有法竹

boolean match = ((data[0] & 0xFF) == 0xFE);这句是因为把0xFF当做整数来比较,它会自动转换data[0]为整数型。圆括号里面的0xFE (254)也会同样转换。 就像你说的data[0]是(byte)0xFE。因此会当做整形0xFE 与整形的0xFE 比较,因此会返回正确结果。boolean match (data[0] == 0xFE);比较byte和int0xFE : 254data[0] = (byte) 0xFE;是byte类型,值是-2-2和254值不相等, 所以你比较起来和前面结果会不一样如果简化比较:boolean match = (data[0] == (byte)0xFE);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java