Ich versuche, etwas Fortran-Code zu verstehen. An einer Stelle gibt es Zeile, wo es eine binäre Datei liest, ohne eine Eingabeliste Angabe, nur die Datei selbst und ein Statement-Label für das Erreichen des Endes der Datei:Eine Binärdatei mit Fortran lesen - Wenn keine Eingangsliste angegeben wird, wie viele Bytes überspringt Fortran?
open (unit=unitname,file='name.ext',form='unformatted',status='old',iostat=ios)
...
read (myFile,end=902)
ich die Datei mit einigem Python-Code lesen und Mit etwas Debugging habe ich festgestellt, dass der Fortran-Code mit diesem read
Befehl genau 2484 Bytes (ja, ich habe gezählt!) überspringt. Ich weiß nicht, ob es dafür einen besonderen Grund gibt. Wenn ich mich nicht irre, würde ein read
Befehl in Fortran einfach die ganze Zeile ohne irgendeine Eingangsliste lesen, aber da dies eine binäre Datei ist, frage ich mich, was dann passiert. Woher kommt diese 2484 magische Zahl? Was passiert, wenn Sie eine Binärdatei lesen, ohne eine Eingabeliste in Fortran anzugeben?
Wie ist die Datei verbunden, dh, welche 'offene' Anweisung gibt es? Es ist mit ziemlicher Sicherheit eine unformatierte sequentielle Zugriffsdatei, und der Datensatz ist um diese Zahl herum lang. – francescalus
Ja, tatsächlich ist es unformatiert: open (unit = Einheitenname, file = 'name.ext', form = 'unformatted', status = 'alt', iostat = ios) Folgen die Daten der Datensatznummer? – user3180077
Die Datensatzlänge ist in die Datei eingebettet, siehe hier: http://stackoverflow.com/a/15071797/1004168 – agentp