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 Matthias Koch - 9.02.2006 19:51)
Als Antwort auf Re: Bytearray umwandeln in Zahl mit Vorzeichen von André H. - 8.02.2006 8:41
Ich nutze:
OSOPT V3.0
> Hallo KönigDichBauch,
>  
> > function getlong(byte b[], int p) returns long
> > {
> >   long l;
> >
> >   l = b[p+0];
> >   l = l or b[p+1] shl 8;
> >   l = l or b[p+2] shl 16;
> >   l = l or b[p+3] shl 24;
> >
> >   return l;
> > }

>
> Eine kleine Optimierungsanmerkung:
> Wenn Du es so schreibst, ist die Ausführungen etwas schneller und es wird weniger
> Speicherplatz benötigt:
> function getlong(byte b[], int p) returns long
> {
>   long l;
>
>   l = b[p+0] or b[p+1] shl 8;
>   return l or b[p+2] shl 16
>            or b[p+3] shl 24;
> }

>
> Die Funktion bleibt natürlich dieselbe.
>
> MfG André H.
>
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.

mfg Matthias






    Antwort schreiben


Antworten:

Re: Bytearray umwandeln in Zahl mit Vorzeichen (von André H. - 10.02.2006 21:23)
Re: Bytearray umwandeln in Zahl mit Vorzeichen (von Felix W. - 10.02.2006 20:29)
    Re: Bytearray umwandeln in Zahl mit Vorzeichen (von André H. - 10.02.2006 21:35)