• 6026阅读
  • 3回复

[讨论]QByteArray 数据处理问题 [复制链接]

上一主题 下一主题
离线lsj754039701
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-20
  1. QString str="AAAAAAAAAAAAAA";
  2.     QByteArray data;
  3.     QDataStream in(&data,QIODevice::WriteOnly);
  4.     in<<qint8(0)<<str;
  5.     qint8 x;
  6.     QDataStream out(&data,QIODevice::ReadOnly);
  7.     out>>x;
  8.     data.remove(0, sizeof(qint8) );
  9. QString str2(data);
  10. qDebug()<<str2;  //  输出的是 “”  
  11. 问题是我想把data里的 qint8 删掉,只剩 str ,不知道该怎么做。。。。希望有大神指点
  12. (这段程序只是测试用的,并没有意义。)
离线realfan

只看该作者 1楼 发表于: 2016-05-20
只要这样就行了:
qint8 x;
QString str2;
out >> x >> str2;
离线realfan

只看该作者 2楼 发表于: 2016-05-20
你的作法,是会有问题的。
数据流入,除了数据本身,还会有带其它信息。
你想只是手工把某个字节去掉,是得不到正确结果的。
既然用流,那就怎么流进去的,就怎么流出来。不要想着自己去改变二进制数据。
离线lsj754039701

只看该作者 3楼 发表于: 2016-05-23
回 realfan 的帖子
realfan:你的作法,是会有问题的。
数据流入,除了数据本身,还会有带其它信息。
你想只是手工把某个字节去掉,是得不到正确结果的。
既然用流,那就怎么流进去的,就怎么流出来。不要想着自己去改变二进制数据。
 (2016-05-20 19:03) 

      谢谢,明白了,之前一直以为用QDataStream往QByteArray里注入数据后,QByteArray里只会包含数据本身呢。
       不过有时候希望把数据流里的某些数据删掉,某些保留下来,就像得到一个QByteArray参数,里面有图片大小,图片名字和图片数据,怎么得到图片数据呢?
快速回复
限100 字节
 
上一个 下一个