Tengo un archivo binario que me gustaría leer con Fortran. El problema es que no fue escrito por Fortran, por lo que no tiene los indicadores de longitud de registro. Por lo tanto, la lectura usual Fortran no formateada no funcionará.¿Puede Fortran leer los bytes directamente desde un archivo binario?
Pensé que podría ser astuto y leer el archivo como un archivo formateado, byte a byte (o 4 bytes por 4 bytes, realmente) en una matriz de caracteres y luego convertir el contenido de los caracteres en enteros y flotantes a través de la función de transferencia o la temida declaración de equivalencia. Pero esto no funciona: trato de leer 4 bytes a la vez y, de acuerdo con la salida POS de la declaración inquire
, la lectura salta más o menos como 6000 bytes, y la matriz de caracteres se carga con basura.
Así que eso es un no ir. ¿Hay algún detalle en este enfoque que estoy olvidando? ¿O hay una forma fundamentalmente diferente y mejor de hacer esto en Fortran? (Por cierto, también intenté leer en una matriz integer*1
y una matriz de bytes. Aunque estos códigos se compilarían, cuando se trataba de la instrucción read, el código se bloqueaba.)
Funciona muy bien! ¡Gracias! Y pensé que estaba a punto de ser bueno con FORTRAN 90. ¡Y ahora más para aprender! Ah bueno. Muchas gracias. –
Sin el acceso de "transmisión", la lectura de Fortran interpretaba algunos datos como información de longitud de registro. Que saltó datos que deseaba leer y causó que las longitudes de registro fueran incorrectas. Además, el archivo realmente no tiene registros en el sentido Fortran. –
@ M.S.B .: Si, como indica el OP, primero intentó con la lectura formateada, supongo que escaneó hacia delante hasta que tocó un carácter de nueva línea. – janneb