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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как считать из файлу Binary дату?  (Прочитано 5066 раз)
rundir
Гость
« : Февраль 24, 2011, 13:01 »

Добрый день

На линуксе у меня крутится приложение которое получает на сокет информацию в бинарном виде, я ее обрабатываю и складываю в БД. А необработанную я помещаю в файл.

Потом этот файл я скопировал на виндоус и хочу еще раз обработать эту информацию, но у меня не получается считать правильно. вместо нужных мне 23х байт, считывается 35. потому как обрабатывает байты неправильно.

Как правильно решить такую задачу?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 24, 2011, 13:03 »

Без кода ничего сказать нельзя.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rundir
Гость
« Ответ #2 : Февраль 24, 2011, 13:09 »

Вот таким вот образом я записываю в файл на линуксе.
Код:
  
QFile fd("/tmp/gps_271010.log");
  if(!fd.open(QIODevice::Append))
  {
  qDebug()<<"ERROR FILES";
  }
QTextStream out(&fd);

  tmp=getString(i,buffer,buffer.size());
   qDebug() <<"SIZE: "<< buffer.size()<<"\nRed data from client\n" << "\nEND data\n";

  out<< QDateTime::currentDateTime().toString()<<":: "<<buffer.size()<<"::"<<buffer<<"::\n";
//  fd.writeData(buffer.data(),buffer.size());
  fd.close();

Вот тут экспериментировал со считыванием
Код:
QFile fd(fileName);
    if(!fd.open(QIODevice::ReadOnly))
    {
          msgBox.setText("Error open file");
          msgBox.exec();
     }
    qint64 len = fd.bytesAvailable();
    char *ss = new char [len];
    uint l= len;
    QDataStream stream( &fd );

    stream.readBytes(ss, l);
    QByteArray wBData(ss);
    delete [] ss;
    wBData=fd.readAll();

    //stream.readBytes();
    QByteArray line,date,size,code;
    const QByteArray code_tmp;
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 24, 2011, 13:23 »

Гхм. Записываешь через QTextStream, а пытаешься читать через QDataStream. Разницу видишь?
Цитировать
Red data from client
Красные данные от клиента... Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rundir
Гость
« Ответ #4 : Февраль 24, 2011, 14:07 »

Дык, это получается, что я неправильно записываю.  QTextStream не записывает в бинарном виде?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Февраль 24, 2011, 14:15 »

Нет. QTextStream какбэ намекает. Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rundir
Гость
« Ответ #6 : Февраль 24, 2011, 14:20 »

Спасибо:)
щас своими кривыми руками попробую переделать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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