Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: irv от Октябрь 06, 2010, 14:48



Название: QDataStream - непонятно
Отправлено: irv от Октябрь 06, 2010, 14:48
Мне не совсем понятно поведение приведенного ниже кода:

Код:
QByteArray ba;
ba.append( 1342345 );
ba.append( "string" );
ba.append( 14.2345 );

QFile file ("filename.bin");
           if (file.open(QIODevice::WriteOnly )){
              QDataStream stream(&file);
              stream.setVersion(QDataStream::QT_4_6);
              stream << ba;
             }
Почему первые три байта забиваются нулями?




Название: Re: QDataStream - непонятно
Отправлено: xokc от Октябрь 06, 2010, 16:19
Если читать внимательно http://doc.trolltech.com/4.7/qdatastream.html, то выяснится, что "A data stream is a binary stream of encoded information which is 100% independent of the host computer's operating system, CPU or byte order". Т.е. теоретически, там может сколько угодно байт в каком-угодно месте быть забито чем угодно. Если нужно записать ровно, то ожидается позже увидеть в файле, то стоит прочесть там же раздел "Reading and writing raw binary data". Т.е. вместо append пользоваться readRawData()/writeRawData().