Hallo zusammen,
ich habe mal wieder einen C-Knoten im Kopf (naja, es ist diesmal mehr
ein Zweierkomplementknoten): Ich habe ein Datum, das als 24Bit oder 32
Bit vorliegt. Davon will ich die letzten beiden Bytes + Vorzeichen
nutzen, um einen 16-Bit-Integer zu erhalten:
1 | int_least24t bigval;
|
2 | uint8_t valLo, valHi;
|
3 | int16_t totalLeast;
|
4 |
|
5 | bigval = -1048575;
|
6 |
|
7 | valLo = bigval; // ??
|
8 | valHi = bigval < 0 ? (???) : bigval >> 8;
|
9 |
|
10 | // Test
|
11 | totalLeast = (valLo + (int16_t) valHi<<8);
|
Wie berücksichtige ich das Vorzeichen korrekt?
Viele Grüße
W.T.