【问题标题】:QBitArray size stays zero after trying to fill it with stream operatorQBitArray 大小在尝试用流运算符填充后保持为零
【发布时间】:2013-06-01 10:19:15
【问题描述】:

为什么 QBitArray 的大小保持为零?我正在使用 Qt 5.0.2。

QByteArray bytes(4,'b'); // four bytes
QBitArray bits;
QDataStream stream(&bytes, QIODevice::ReadWrite);

stream >> bits;

qDebug() << bytes.size() << bits.size();

【问题讨论】:

  • 输出是“4 0”??
  • @UmNyobe:是的。

标签: qt qbytearray


【解决方案1】:

QDataStream 读取数据时,它希望数据采用某种格式,如http://qt-project.org/doc/qt-5.0/qtcore/datastreamformat.html 所述。在流式传输QBitArray 的情况下,这是:

The array size (quint32)
The array bits, i.e. (size + 7)/8 bytes

如果不是这种情况,操作将失败 - 您可以检查 QDataStream::status() 以检测错误。

【讨论】:

  • 感谢您的提示,您是对的。出于测试目的,我将 QByteArray 大小 * 8 和每个字节的字节填充到与另一个缓冲区耦合的流中,然后填充到 QBitArray,它可以工作。当然,这已经不是很方便了......
猜你喜欢
  • 1970-01-01
  • 2019-11-09
  • 2018-08-08
  • 2015-10-13
  • 2011-02-08
  • 2019-07-04
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多