当前位置: 代码迷 >> QT开发 >> QT 读写二进制文件解决办法
  详细解决方案

QT 读写二进制文件解决办法

热度:348   发布时间:2016-04-25 05:13:21.0
QT 读写二进制文件
我现在想将comtrade数据文件由binary格式转化为ascii格式,用QDatastream读入binary数据文件,请问用QDatastream读入二进制格式有什么规格吗 为什么我读过来的不对呢
这是我的代码:
  QFile file_dat(dat_name);
  QDataStream in_dat_binary(&file_dat);
  in_dat_binary.setVersion(QDataStream::Qt_4_3);

quint32 sample_num;
qint32 timemult_num;
qint16 achnum_value;
qint16 dchnum_value;
int iEndPoint=endPoint->value();
for (int ii=0;ii<iEndPoint;++ii)
{
  in_dat_binary>>sample_num>>timemult_num;
tableWidget_dat->setItem(ii,0,new QTableWidgetItem(QString::number(sample_num)));
tableWidget_dat->setItem(ii,1,new QTableWidgetItem(QString::number(timemult_num)));
for (int jj=0;jj<iAchNum;++jj)
{
in_dat_binary>>achnum_value;
tableWidget_dat->setItem(ii,jj+2,new QTableWidgetItem(QString::number(achnum_value)));
}
   
for (int kk=0;kk<iBytesNum;++kk)
{
in_dat_binary>>dchnum_value;
////////////////////////////////////
}

------解决方案--------------------
请看完我的回复,谢谢。

第二:根据需要设置字节序
in_dat_binary.setByteOrder(QDataStream::LittleEndian 或者 QDataStream::BigEndian

你的二进制文件的前四个字节是什么?是:0x01 0x00 0x00 0x00 吗?
如果是请设置:in_dat_binary.setByteOrder(QDataStream::LittleEndian);
  相关解决方案