Unsigned LowByte und HighByte nach int
-
Hallo!
Ich brauche eine Funktion, die mir aus einem unsigned LowByte und HighByte
ein int macht. Die beiden Bytes sind codiert im 2er Komplement.
Folgendes brachte nicht das gewünschte Ergebnis:int LowHighToSigned(unsigned _LowByte, unsigned _HighByte) { unsigned Decimal; Decimal = (_HighByte << 8) | _LowByte; return (~Decimal) + 1; }
-
Na dann antworte ich mal selber. So hat's funktioniert:
int LowHighToSigned(unsigned _LowByte, unsigned _HighByte) { int16_t Decimal; Decimal = (_HighByte << 8) | _LowByte; //if negative (leading 1) if (Decimal & 32768 == 32768) { Decimal = -((~Decimal) + 1); } return Decimal; }
Ob das die beste Lösung ist, weiss ich nicht, aber es geht.