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
|
|