• 6743阅读
  • 6回复

求助关于QT读取二进制文件 [复制链接]

上一主题 下一主题
离线winter978
 

只看楼主 倒序阅读 楼主  发表于: 2016-08-01
各位达人:
      请教一个问题:我现在想读取一个二进制文件的前3200字节,我看了QT帮助里面可以使用DataStream里面的readbytes来实现。
帮助里面是这样描述的:

QDataStream & QDataStream::readBytes ( char *& s, uint &/ )



这样好像读取出来的不是存放在一个字符串里面把?


char *& s----------这里的参数应该怎么填写?




谢谢!
离线dbzhang800

只看该作者 1楼 发表于: 2016-08-01
不要使用QDataStream,如果这个文件不是你用QDataStream生成的。
离线6gongzi

只看该作者 2楼 发表于: 2016-08-02
char *buffer= new char[3200+1];
int length= 0;
a->readBytes (buffer, length);

delete [] buffer;

离线kaon

只看该作者 3楼 发表于: 2016-08-02
回 dbzhang800 的帖子
dbzhang800:不要使用QDataStream,如果这个文件不是你用QDataStream生成的。 (2016-08-01 19:58) 

用int QDataStream::readRawData(char *s, int len)
这个应该可以吧?
离线dbzhang800

只看该作者 4楼 发表于: 2016-08-02
回 kaon 的帖子
kaon:用int QDataStream::readRawData(char *s, int len)
这个应该可以吧? (2016-08-02 08:45) 

可以,但直接用QIODevice/QFile的read不是比这更简单直接么?
离线jnny_cn

只看该作者 5楼 发表于: 2016-08-02
    QString _str_src_file_name = ui->edtFilePath->text();
    QFile _infile(_str_src_file_name);
    if(_infile.open(QIODevice::ReadOnly))
    {
        QDataStream _in(&_infile);
        
        char _s;
        
        _in.readRawData(&_s,1);    
    }    
    else
    {
    
    }


读取一个字节的,可改写一次读取多字节
离线jnny_cn

只看该作者 6楼 发表于: 2016-08-02
回 kaon 的帖子
kaon:用int QDataStream::readRawData(char *s, int len)
这个应该可以吧? (2016-08-02 08:45) 

实测可用
快速回复
限100 字节
 
上一个 下一个