Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Bytearray umwandeln in Zahl mit Vorzeichen Kategorie: Programmierung (von André H. - 8.02.2006 8:38)
Als Antwort auf Re: Bytearray umwandeln in Zahl mit Vorzeichen von Felix W. - 2.02.2006 9:39
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Felix,

> Das Bytearray umfasst 8 Bytes, mein Wert steht in Array 0 bis 2 (24 Bit-Wert).
> Die Reihenfolge ist LowByte - HighByte.
> Weiterhin ist der Wert im Zweierkomplement codiert, d.h. mit Vorzeichen.

Gut, das ist ein 24Bit-Long-Integer. Die CC2 kann nur einen 32Bit-Longinteger.
Daher kann man die Zahl leider nicht einfach so zusammensetzen, sondern muÃ?
für Negative Zahlen etwas mehr vorsehen:

long wert;
//Bit 7 bis 15=Vorzeichen, Bit 0 bis 6 Daten des High(est)-Byte:
wert=((daten[2] and 0x80)!=0 shl 7) or (daten[2] and 0x7F);
wert=(daten[1] shl 8) or daten[0] or (wert shl 16);

Man kann das ganze leider nicht in eine Zeile schreiben, da der Standarddatentyp
16Bit-Integer ist. Darum muÃ? eine Long-Variable in der Berechnung beteiligt sein,
damit alles auch als Longinteger behandelt wird.
In der ersten Zeile wird daher alles als 16Bit-Integer behandelt.
In der zweiten Zeile werden die Schiebeoperation von wert und die zweite or-Verknüpfung
als Long behandelt. Der Rest als Integer.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: