Russian Qt Forum
Ноябрь 24, 2024, 09:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите прочитать бинарный файл  (Прочитано 3392 раз)
menand
Гость
« : Январь 31, 2012, 15:13 »

Есть файл.

в начале 8 байт - текста (ascii), затем float64 число, затем int32 число, затем массив float32 длинна которого - в int32 числе (которое только что считали) (ну и т.д., дальше уже по аналогии разберусь).

Собственно вопрос - как отрыть такой файл и читать с него данные? Тоесть может ли кто-нибудь привести пример чтения:

1) 8 байт текста
2) флоат64
3) инт32
4) for(int i=0;i<N;i++) читать флоат32

ЗЫ программа должна быть кросс-платформленной.. тоесть длинну типов надо както явно задавать..
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Январь 31, 2012, 15:43 »

Сделай свой класс, по аналогии с QDataStream

Типа:

Код
C++ (Qt)
QFile file("file.dat");
 
file.open(QIODevice::ReadOnly);
MyDataStream in(&file);    
 
in.setAsciiSize(8);
in.setValueDataTypeSize(64); //подразумеваем, что тип данных вещественный
in.setArrayDataTypeSize(32); //подразумеваем, что тип данных вещественный
 
QString str;
double a;
QVector<float> v;
 
in >> str >> a >> v;  
 
//или
in.setAsciiSize(8);
in.setValueDataTypeSize(32); //подразумеваем, что тип данных вещественный
in.setArrayDataTypeSize(64); //подразумеваем, что тип данных вещественный
 
QString str;
floata;
QVector<double> v;
 
in >> str >> a >> v;    
 

Как то так
« Последнее редактирование: Январь 31, 2012, 15:58 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
mutineer
Гость
« Ответ #2 : Январь 31, 2012, 16:11 »

Ну или QFile::read()
Записан
menand
Гость
« Ответ #3 : Январь 31, 2012, 16:22 »

свой класс делать както слишком монструозно..

read () - както не могу понять как он работает.. как запоминает на каком месте остановился и вообще..

можно пример как им пользоваться на приведённом выше формате файлов?
Записан
mutineer
Гость
« Ответ #4 : Январь 31, 2012, 16:24 »

Гугл тебе сильно поможет - это уж слишком базовые знания
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.