Seite 1 von 1

Data + DataSection

Verfasst: 27.08.2010 21:24
von walter741
Hallo

Ein JPG Bild beginnt mit der Bytefolge FF D8 FF E0..........usw laut Hex-Editor
Im Internet wir dies auch bestätigt.

Wird ein Bild in einen Data-Block gesteckt, so beginnt dieser aber mit E0 FF D8 FF .......usw

Code: Alles auswählen

   Data.l $E0FFD8FF, $464A1000, $01004649, $60000101, $00006000, $4300DBFF, $06060800, $08050607 
   Data.l $09070707, $0C0A0809, $0B0C0D14, $12190C0B, $1D140F13, $1D1E1F1A, $201C1C1A, $20272E24 
   Data.l $1C232C22, $2937281C, $34313................................... 
Alle Byts in einem Blöcke sind vertauscht.
1.Byte mit 4.Byte und 2.Byte mit 3.Byte
Das Vertauschen funktioniert auch, aber ich weiß nicht warum?
Wo ist der Unterschied zwischen dem Auslesen einer Datei und einer Data-Liste?
Oder wo ist mein Denkfehler?
Die PB-Hilfe ist hier auch sehr zurückhaltend.

Wieder einmal auf Eure Hilfe angewiesen

Walter

PB4.40 und XP

Re: Data + DataSection

Verfasst: 27.08.2010 21:51
von Thorium
benutze .b oder .a anstatt .l

Es handelt sich hier um die sogenannte Byteorder.
Bevor ich mir die Finger wundtippe, hier kannst du dich etwas dazu belesen: http://de.wikipedia.org/wiki/Byte-Reihenfolge

Re: Data + DataSection

Verfasst: 27.08.2010 23:54
von STARGÅTE
Das ist auch der Grund warum zB die Quad: 'Beispiel' (PB Syntax um Zeichen in Bytes zu wanden)
als String ausgelesen genau verdreht ist:

Code: Alles auswählen

Quad.q = 'Beispiel'
Debug Quad
Debug PeekS(@Quad,8)
Das nur nebenbei :wink:

Re: Data + DataSection

Verfasst: 28.08.2010 00:25
von walter741
Hallo

Danke für Eure Antworten.

Diese helfen ein wenig weiter aber

jetzt weiß ich, das ich eigentlich nichts weiß.

lg Walter

Re: Data + DataSection

Verfasst: 28.08.2010 08:28
von Thorium
walter741 hat geschrieben: Diese helfen ein wenig weiter aber

jetzt weiß ich, das ich eigentlich nichts weiß.
Ok, vieleicht ist der artikel in wikipedia etwas zu kompliziert geschrieben. Ich versuchs mal etwas einfacher zu erklären.

Genrell setzen sich Zahlen aus blöcken zusammen. Im dezimalsystem haben wir 10 einheiten pro block, 0-9. Um größere zahlen darzustellen schreien wir einfach mehrere blöcke hintereinander. z.b. 26. Aber mit der schribweise 26 könnte genausogut 62 gemeint sein, wenn man nicht weis welcher block der höherwertige ist. Deswegen hat man sich allgemein darauf geeinigt das zahlen immer mit dem höchstwertigen block beginnen.
Das kommt uns nur so selbstverständlich vor, weil wir uns keine gedanken darüber machen. Man hätte auch genausogut festlegen können das mit dem niederwertigsten block begonnen werden muss.
In der Tat ist es sogar so das die aussprache in der deutschen sprache vertauscht ist. wir sagen sechs-und-zwanzig, auf english sagt man twenty-six.

Analog ist das beim computer genauso, nur das der kleinste block hier 1 byte ist. Es haben sich beim computer aber 2 standards behauptet, little endian (niederwertigstes byte zuerst) und big endian (höchstwertiges byte zuerst). Beim PC haben wir immer little endian. Das heisst ist eine zahl 2 byte lang, wird das niederwertige byte zuerst gespeichert und dahinter das höherwertige. liest du die beiden bytes nun getrennt aus und klebst sie dann so zusammen wie du sie ausgelesen hast, hast du die reihenfolge vertauscht.

Re: Data + DataSection

Verfasst: 28.08.2010 10:12
von walter741
Hallo

Thorium
Danke für Deine Mühe mit dem schreiben.


STARGÅTE
Nettes Beispiel, habe einige Tropfen Schweiss vergossen.


Nochmals Danke

walter