Endian Cross Interpretation

Endian-Cross-Interpretation
Lesen von Daten aus FORTRAN-Files mit variabler Recordlänge und anfangs unbekanntem Endian-Typ von einem Programm, das auf Maschinen mit unterschiedlichem Endian-Typ läuft

1.) Ermitteln des Endian-Typs der Maschine, auf dem das Programm läuft
Auf einen Speicherplatz oder in ein Register werden zwei aufeinanderfolgende unterschiedliche ASCII-Zeichen geschrieben. Wird jetzt von dort ein Integer gelesen, kann dieses zwei mögliche Werte annehmen.
(C:union; FORTRAN:EQUIVALENCE)
Beim einen Wert ist die CPU vom Little-Endian-Typ (z.B: Intel), im anderen Fall vom Big-Endian-Typ. (z.B: SGI)
2.) Feststellen, ob die Bytes der Filedaten geswappt werden müssen
Von der FORTRAN-Standardlibrary wird jeder einzelne Record immer im gleichen Format abgelegt. Wird eine 4-Bytes-grosse Integerzahl von Fileposition Null gelesen und ist diese im zulässigen Bereich, so kann das Swappen der Daten unterbleiben. Ist das geswappte Integer im zulässigen Bereich, müssen alle Daten vor der Verarbeitung geswappt werden.

Zurück