Re: Bytearray umwandeln in Zahl mit Vorzeichen Kategorie: Programmierung (von André H. - 10.02.2006 21:23) | ||
Als Antwort auf Re: Bytearray umwandeln in Zahl mit Vorzeichen von Matthias Koch - 9.02.2006 19:51 | ||
| ||
Hallo Matthias, > Guten Abend K_D_B und André, > ich habe diese Routine mal im Simulator getestet, leider ohne Erfolg. > Das shl 8 auf eine Bytevariable geht wohl deshalb noch, da intern immer 16 Bit zur Verfügung stehen. > Shl 16 auf eine Byte-Variable funktioniert, wie gesagt, bei mir im Simulator nicht. Möglicherweise habt ihr das > auf der CCII getestet??? > Jedoch grundsätzlich versagt diese Routine beim Umwandeln von 24 Bit 2er-komplemtärzahlen, da bei der > equatation in long-typen das höchstwertige Byte immer mit 0x00 aufgefüllt wird was natürlich bei negativen > Zahlen zu einem Fehler führt. > Gebt mir mal einen Tip woran es bei mir im Simulator haken könnte. Ja, da hab ich das gelegt Ei auch noch ausgebrütet. ;-) Natürlich geht ein Schieben bei Integer und Byte mit 16 Bit nicht. Dafür mu� der Wert vorher schonmal Long definiert sein. Ich hab's ja selbst in den FAQ geschrieben. Ich hatte einfach irgendwie die shl 16 und shl 24 übersehen. ;-) Im anderen Posting in diesem Thread hatte ich es aber korrekt geschrieben: 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); So funktioniert es immer, da in der ersten Zeile alles noch im 16Bit-Bereich ist und das in eine Long Variable gespeichert wird. In der zweiten Zeile wird die Long-Variable um 16 Bit geschoben, was wiederum ohne Probleme geht. 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: |