Formatting fread binary file (converting from FORTRAN script)

4 Ansichten (letzte 30 Tage)
Darcy Cordell
Darcy Cordell am 15 Jul. 2020
Kommentiert: dpb am 16 Jul. 2020
I am converting some Fortran to MATLAB and am stuck early on when trying to load a binary file. I know MATLAB well but I have not had much experience loading binary files. I have mostly had to only load text files in the past. Furthermore, I am a newbie to Fortran and the I/O commands and generally lower-level language is a challenge.
The Fortran script has a read statement:
READ(Ifile,FMT='(A70)',ERR=993) Tag
My understanding is that this command has a file id (Ifile) similar to "fid" which has been called using a previous OPEN command (similar to fopen).
Furthermore, the '(A70)' specifies that the read command should read 70 bytes of the file as a character (A).
The result is stored in the variable "Tag".
However, in MATLAB, if I use
Tag = fread(fid,70,'char')
I don't get the same result as Fortran.
What am I missing here? Any help is appreciated.
  3 Kommentare
James Tursa
James Tursa am 16 Jul. 2020
Bearbeitet: James Tursa am 16 Jul. 2020
You might have to skip 4 bytes first, and use '*char' formatting (with the asterisk) to get a char result. E.g., you might have to use some variation of these lines:
fread(fid,[1 4],'*uint8');
Tag = fread(fid,[1 70],'*char',4);
dpb
dpb am 16 Jul. 2020
Specifically, the file could be SEQUENTIAL or DIRECT. If it is direct access, then there will be as James notes a record marker at beginning (and perhaps end) of each record that will have to skip; a sequential file will have only record terminators and can be variable length; direct access is fixed-length.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Fortran with MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by