boolean match = ((data[0] & 0xFF) == 0xFE);
vergleicht ganze Zahlen als 0xFF eine ganze Zahl ist, dieser Ausdruck Ihre Bytedata[0]
in einem int Scale-up und vergleichen, was zu einem zweiten int 0xFE(254)
in der Klammer ist. Wie Sie sagen data[0]
ist (byte)0xFE
, wird es zunächst auf die ganze Zahl 0xFE
skaliert und mit der ganzen Zahl 0xFE
verglichen, so dass dies funktioniert.
boolean match = (data[0] == 0xFE);
vergleicht ein Byte in den int 0xFE
: 254
data[0] = (byte) 0xFE;
ein Byte (es ist also signed) und sein Wert ist -2
.
-2
nicht gleich 254
, ist also, warum Sie Daten [0] als ein Byte oder als Maßstab auf eine ganze Zahl it up vergleichen muss, bevor er die ganze Zahl 0xFE
zu vergleichen.
könnte ein einfacher Vergleich
sein
boolean match = (data[0] == (byte)0xFE);
Sind Sie Compiler-Warnungen zu bekommen? Ich denke, dass diese Integer-Literale sein könnten (und dann könnte der Vergleich als int erfolgen, mit Ihrer negativen Zahl im Array und dem positiven Ganzzahl-Literal). – Thilo