2 o19830015 o19830015 于 2012.11.15 15:59 提问

android中比较byte值的问题

问题:

比较byte数组的值时:

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

然后返回真值,但是:

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

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

data这样就会byte数组:

data[0] = (byte) 0xFE;

1个回答

ce_la_vie
ce_la_vie   2012.11.15 16:18
已采纳
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);
o19830015
o19830015 厉害厉害
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!