Dann mach mal aus byte Empfangszeichenkette unsigned Byte. oder vergleiche statt mit 0xFE mit (char) oder besser
(unsigned char) 0xFE.
Deine Konstante ist von Typ int. Bei Operationen wird immer auf die Kardinalität des größten Datentyps erweitert.
Also ein Element aus Empfangszeichenkette wird umgewandelt von char auf int.
Da du aber signed char hast ist bei 0xFE das Vorzeichenbit gesetzt also wir haben den Wert -2 Das expandiert
auf int gibt 0xFFFE also auch -2.
Sind die Datentypen unsigned dann ist 0xFE 254 und auch als int 254 also 0x00FE.
Je nach Compiler kann man sich bei char nicht darauf verlassen ob signed char oder unsigend char die
Voreinstellung ist. Also immer "ausformulieren".
Ulli