Увоз - Увоз на неформатиран бинарен Fortran - CiupaCabra

Имам неформатирана бинарна датотека генерирана со помош на компајлерот Compaq Visual Fortran (голем ендијан).

Еве што вели за документацијата:

Бинарната датотека е напишана во општ формат кој се состои од матрица на податоци, управувана од запис за опишувач:

  1. Клучен збор со 8 карактери што ги идентификува податоците во блокот.
  2. Целосен број на бајтни сигнали кои го дефинираат бројот на елементи во блокот.
  3. Клучен збор со 4 карактери што го дефинира типот на податок. (ИНТЕ, РЕАЛНО, ЛОГИ, ДВОЈНО>)

Елементите на заглавието се читаат како единствен запис. Податоците го следат опишувачот на нов запис. Нумеричките матрици се поделени во блокови до 1000 елементи. Големината на физичкиот запис е иста како и големината на блокот.

Дополнителни информации за клучни зборови:

  1. SEQHDR - 1 ставка - INTE - Заглавие на редоследот, со вредност на податоците. Ако бројот е присутен, тој е кодиран цел број што одговара на времето кога е креирана датотеката.
  2. MINISTEP - 1 ставка - INTE - Бројот на Ministep во суштина е бројот на податоците (пр. PSI на ден 1)
  3. ПАРАМИ - n ставки - РЕАЛНИ - Векторски параметар по вредност на министер.

Обиди да се прочитаат таквите податоци во Математика, вклучувајќи увоз

неформатиран

покажи ми препознатлив текст, но нема корисни нумерички вредности.

Предметната датотека е достапна тука.

Математика е во состојба да го анализира овој тип датотеки и, доколку е така, кој е најдобриот начин?

2 одговори

Датотеката се чини дека е унифицирана збирна датотека од Schlumberger Eclipse Reservoir Simulator. Овој формат на датотека користи кодирање за снимање на променлива должина Compaq Visual Fortran.

Математика не нуди никаква вградена функционалност за читање на овој формат на датотека, така што ќе треба сами да ја анализираме.

Започнуваме со дефинирање на функција за погодност за читање на бинарни податоци од големи ендијани од датотека:

Логичките записи во датотеките Eclipse се во два дела: заглавието и податоците. Следната функција го чита заглавието:

Должината на записот на должината на записот и должината на CVF се прескокнуваат, оставајќи го клучниот збор на записот, бројот на податоците и типот на податоците. Секој тип на елемент бара посебно ракување:

Овој код се занимава само со интегрални типови (INTE) и реални податоци (REAL), иако би било лесно да се прошири ова за да се третираат и други видови. readEclElement се користи во секој случај за да се прочита потребниот број на елементи на податоци - што може да вклучува неколку променливи записи:

Овие функции за помош се користат за читање на комплетен пар на заглавие/податоци:

Останува да ја отворите датотеката, да ги прочитате сите записи и да ја затворите датотеката:

Еве го readEclFile во акција, читајќи ја испорачаната датотека со податоци (под претпоставка дека датотеката е во истиот директориум со тетратката):

Не знам кодирање со време што се користи во записите на SEQHDR .

Предупредување: Јас немам никаква поврзаност со Шлумбергер.