Seite 1 von 1

Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:24
von digger
Ich hab einige komische Effekte bei meinen Spin Versuchen, die ich mir nur wie folgt erklären kann.
Kann es sein, dass wenn ich ein Long habe welches ich byteweise lesen will, dass dann dass Byte mit dem Index[0] ganz rechts liegt und das byte mit dem Index[3] ganz links? Läuft der Index also wie in binärer Leseweise von links nach rechts?

Ich hätte es irgendwie in der Art der String-indizierung erwartet wo beim String "abcde" das byte[0] = "a" und byte[4] = "e" ist.

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:30
von Rainer
digger hat geschrieben:Ich hab einige komische Effekte bei meinen Spin Versuchen, die ich mir nur wie folgt erklären kann.
Kann es sein, dass wenn ich ein Long habe welches ich byteweise lesen will, dass dann dass Byte mit dem Index[0] ganz rechts liegt und das byte mit dem Index[3] ganz links? Läuft der Index also wie in binärer Leseweise von links nach rechts?

Ich hätte es irgendwie in der Art der String-indizierung erwartet wo beim String "abcde" das byte[0] = "a" und byte[4] = "e" ist.

Code: Alles auswählen

|--MSB---| |--LSB--|
%0001 0110 1111 1111
Das Beispiel ist nur ein "word" .. gilt aber auch für "longs" natürlich

Die "most significant bits" stehen links, die "least significant bits" rechts ... sozusagen.

Du musst die MSB also entweder durch shiften rausschieben oder halt von rechts nach links lesen

Gruß.
Rainer

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:39
von drohne235
Du hast doch das gedruckte Propellerhandbuch digger. Schau mal auf Seite 208/209 dort ist es ziemlich gut in der Referenz zu "DAT" versteckt.

Edit: Oder Seite 100 im PDF Propeller Manuel welches über das Propeller Tool (Hilfe Menü) aufrufbar ist.

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:41
von digger

Code: Alles auswählen

out := Long[11111111 11110000 00001111 00000000]

repeat i from 0 to 3
      BYTE[output][i] := BYTE[@out][i]
Dabei erhalte ich immer folgendes:

i=0 --> Byte 00000000
i=1 --> Byte 00001111
i=2 --> Byte 11110000
i=3 --> Byte 11111111

Hat mich nur etwas irritiert.

@drohne

nach Seite 209 wäre Index[0] ja doch links ... jetzt muss ich nochmal von vorne anfangen, sonst wird das nix.

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:48
von drohne235
Wieso rechts, das niederwertige Byte ist doch links.

Code: Alles auswählen

long $44332211

ergibt

[byte 0][byte 1][byte 2][byte 3]
[     11][      22][     33][      44]


Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 21:57
von digger
@drohne .. hab Nachsicht mit mir, langsam wacht meine eingerostete Rübe ja auf! ;)

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 22:07
von Rainer
Im Propeller-Manual auf Seite 161 (PDF-Manual) unter "Bitwise shift left" wird's ganz gut erklärt, finde ich.

Gruß.
Rainer

Re: Verständnisfrage Long <-> Byte

Verfasst: Mo 17. Aug 2009, 22:25
von digger
Danke Rainer .. ich sehe jetzt klarer, ich hoffe in den nächsten Tagen auch ein/zwei Tools beisteuern zu können. Auf jeden Fall weiss ich jetzt dass ich noch meilenweit entfernt von der Fähigkeit zur Integration des TCP/IP Stacks auf Administra bin. :oops: