QT下QDataStream 操作二进制文件

ningmeng1984 2015-03-17 04:31:28
大家好:

我在读二进制文件的时候发现 0D 无法读入buff,我知道0D代表回车符,如何才能将0D读入我的buff里,然后我通过转化变成字符0D呢?在网上也没有人提到这方面的解决方案?是不是需要对QDataStream 进行设置?
QDataStream in( &file );
in.setVersion(QDataStream::Qt_4_7);
while(!in.atEnd())
{
in.readRawData(buff,16);
}
...全文
883 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
human_blue 2016-03-22
  • 打赏
  • 举报
回复
引用 3 楼 ningmeng1984 的回复:
问题解决了。采用经典的file文件读模式,采用seek和read结合就可以了。绕大湾了!谢谢!
楼主,我有个问题请教,我想对文件进行读写,用QIODevice::ReadWrite打开文件,为何老读不出来。只能QIODevice::ReadOnly打开文件先读,然后再用QIODevice::WriteOnly,写入数据

  if(file->open(QIODevice::ReadWrite|QIODevice::Truncate))   // 
    {
         QTextStream txtOutput(file);

         txtOutput >> pssw3 >> endl;
        
         file->close();
         qDebug()<<pssw3;
         qDebug()<<ui->lineEdit_Old->text();

        if( pssw3 == ui->lineEdit_Old->text() )
        {
            QTextStream txtIutput(file);

                if( ui->lineEdit_New1->text() == ui->lineEdit_New2->text() )
                {
                    txtIutput << pssw2 << endl;
                    file->close();
                   
                }
        }
ningmeng1984 2015-03-18
  • 打赏
  • 举报
回复
问题解决了。采用经典的file文件读模式,采用seek和read结合就可以了。绕大湾了!谢谢!
ningmeng1984 2015-03-18
  • 打赏
  • 举报
回复
你好: 我使用QFileDialog打开文件,文件是编译出来的.bin文件。我现在是想把数据放在textedit控件内进行操作。 file.open(QFile::ReadWrite | QIODevice::Text) 然后就使用QDataStream 。 QDataStream in( &file ); in.setVersion(QDataStream::Qt_4_7); while(!in.atEnd()) { for(f=0;f<16;f++) { buff[f]=0; } in.readRawData(buff,16); for(f=0;f<16;f++) { ax = QString::number(buff[f] , 16).toUpper(); q = ax.toInt(0,16); if(q<0x10) { ax = "0"+ax; } if(ax.size()>2) { ax = ax.right(2); } ss = ss + ax +" "; } strcode[i] = ss; // qDebug()<<"strcode[i]"<<strcode[i]<<endl; ss=""; } 这样的话就可以在textedit控件里显示出二进制的数值了。但是我发现如果遇到0D 在buff里就直接跳过取下一个数据。不知道什么问题?因为我知道打开二进制文件采用QDataStream 比较方便所以使用这种方法。如果哪位大虾有更好的方法,也不吝赐教。谢谢!
dext 2015-03-17
  • 打赏
  • 举报
回复
你怎么打开文件的?

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧