Delphi-Quellcode:
x := (Integer(BArray[7]) shl 24)
or (Integer(BArray[6]) shl 16)
or (Integer(BArray[5]) shl 8);
or BArray[4];
Bevor du die Bits verschieben kannst, mußt du eventuell den Typ auch noch auf die richtige Größte bringen, damit die Bits nicht rausrutschen.
Rein logisch war auch im C das + schon nicht ganz richtig und es sollte eigentlich ein OR sein.
Denn wenn im BArray[7] das größte Bit gesetzt ist, dann wird Dieses zum Vorzeichen des
Zweierkomplement und nachfolgend die arithmetische Addition der anderen Bytes geht schief.