@M. G. (ixil96)
>Aus einem Byte Array lese ich 4 Bytes aus (beginnend mit MSB) und möchte
>die Werte in eine uint32 Variable wie folgt speichern:
> baselineNewHighByte = ( (baseline[0]<<8) + (baseline[1]) );
> baselineNewLowByte = ( (baseline[3]<<8) + (baseline[4]) );
> baselineNew = ( (baselineNewHighByte<<8) + (baselineNewLowByte) );
Da fehlt ein Cast. Eher so.
1 | baselineNew = (long)baseline[0] << 0 |
|
2 | (long)baseline[1] << 8 |
|
3 | (long)baseline[2] << 16 |
|
4 | (long)baseline[3] << 24;
|
>baselineNewHighByte und baselineNewLowByte sind uint16 Variablen.
Das ist das Problem. Der Compiler rechnet bei diesen Schiebeoperationen
nur mit 16 Bit, wodurch man niemals Daten in höhere Bits schieben kann.
Mit dem Cast rechnet er mit 32 Bit.