boolean match = ((data[0] & 0xFF) == 0xFE);
tamsayılar karşılaştırır, bu ifadenin int için baytdata[0]
büyütmek ve ikinci bir int 0xFE(254)
için parantez içinde ne karşılaştırır. data[0]
'un (byte)0xFE
olduğunu belirttiğinizde, önce 0xFE
tamsayısına ölçeklenecek ve 0xFE
tamsayısıyla karşılaştırılacak, bu da işe yarar. 254
data[0] = (byte) 0xFE;
bir bayt (bu kapalı signed s) ve değeri -2
olup:
boolean match = (data[0] == 0xFE);
int
0xFE
bir bayt karşılaştırır.
-2
254
eşit değil, bu yüzden bir bayt olarak [0] verileri karşılaştırmak gerekir bu yüzden ya ölçeği gibi oluşturulup o tamsayı 0xFE
karşılaştırarak önce tam sayıya.
Daha basit karşılaştırma
boolean match = (data[0] == (byte)0xFE);
herhangi derleyici uyarılarını alıyorsunuz olabilir? Bunların tamsayı değişmezleri olabileceğini düşünüyorum (ve sonra karşılaştırma dizideki negatif sayınız ve pozitif tamsayı değişkeni ile int olarak yapılabilir). – Thilo