• 5842阅读
  • 2回复

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

上一主题 下一主题
离线lsj754039701
 

只看楼主 倒序阅读 楼主  发表于: 2016-06-01
      往一个QByteArray里连续写入 了两张图片的信息,包括图片大小(qint32)和图片本身(QByteArray),发送出去后,接收端应该怎么取出这两张图片 的信息呢?望指点,谢谢。
      测试代码如下:
  1. // imageData :存了一张图片的信息
  2. void write(QByteArray &buffer, qint32 size, QByteArray &imageData)
  3. {
  4.     QDataStream in(&buffer,QIODevice::WriteOnly);
  5.     in.setVersion(QDataStream::Qt_4_6);
  6.     in<<size;
  7.     buffer.append(imageData);
  8. }
  9. void sendImages()
  10. {
  11. .......
  12.     QByteArray buffer;  // 两张图片的信息写入buffer
  13.     QDataStream in(&buffer,QIODevice::WriteOnly);
  14.     in.setVersion(QDataStream::Qt_4_6);
  15.     in<<qint32(0);
  16.     write(buffer,size1,imageData1); // 写入第一张图片信息
  17.     write(buffer,size2,imageData2); // 写入第二张图片信息[/color][/backcolor]
  18.     in.device()->seek(0);
  19.     in<<qint32(buffer.size()-sizeof(qint32));
  20.     socket.write(buffer);
  21. }





离线realfan

只看该作者 1楼 发表于: 2016-06-01
使用流,就是什么顺序流入的,就什么顺序流出。
流入,in << isize << imgData;

流出,out >> isize >> imgData;
离线lsj754039701

只看该作者 2楼 发表于: 2016-06-01
回 realfan 的帖子
realfan:使用流,就是什么顺序流入的,就什么顺序流出。
流入,in << isize << imgData;
流出,out >> isize >> imgData; (2016-06-01 11:29) 

in<<imgData ; //imgData是QByteArray类型,   没有这个重载吧......
因此我直接  :
流入:  in<<size<<img;  // img 是 QImage类型,才发现这样也行......
流出:  out>>size>>img;
快速回复
限100 字节
 
上一个 下一个