对于某些输入,此功能无法正常工作,那么这是什么错误呢?

此处的所有项目代码:link

ps:我正在使用“bits.size()%8”等于零的输入

QByteArray bitsToBytes(QBitArray bits) {
  QByteArray bytes;
  bytes.resize(bits.count()/8);

  // Convert from QBitArray to QByteArray
  for(int b=0; b<bits.count(); ++b)
    bytes[b/8] = ( bytes.at(b/8) | ((bits[b]?1:0)<<(b%8)));

  return bytes;
}

最佳答案

Topro算法总体上应该正确。但是我的演唱会是测试bits[b]?1:0

默认情况下,operator[] ( int i )返回“索引位置i上的位作为可修改的引用”,而operator[] ( int i ) const返回一个 bool(boolean) 值。如果第一个定义是chozen,则将测试引用是否为真。

尝试使用bits.testBit(b)的Topro算法。

关于c++ - 将QBitArray转换为QByteArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8740783/

10-13 05:04