我们知道Qt中的QBitArray类支持在位(bit)的层次上进行数据操作。本文剖析该类在二进制文件读写时的一些要点。另外,在Qt中,QDataStream类对于二进制文件的读写提供了诸多便利,需要注意的是QBitArray的读写依赖于QDataStream类。
使用QBitArray向文件中写数据:
复制代码
    QFile file("C:\\Users\\lenovo\\Desktop\\测试");
    file.open(QIODevice::WriteOnly);//只写
    QDataStream input(&file);
    QBitArray bit(5);//构造大小为5的位数组
    bit[0]=1;bit[1]=0;bit[2]=0;bit[3]=1;bit[4]=1;
    input<
>bit;//从文件中读取数据,可以得到10011
    file.close();
复制代码
  上面只是读写了一个简单的位数组,是最简单的例子。但是当我们需要连续多次的读写这种位数组时,甚至想要一位一位读取这些位信息时,该如何处理呢?
先明确一句话:在进行读操作时,无法根据指定的QBitArray位数组的大小(size)来读取。也就是说实际上读取到的size()大小,与自己设定的大小并不一致。(这个结论个人实验得出)
以如下代码为例:
复制代码
    QFile file("C:\\Users\\lenovo\\Desktop\\测试");//该文件中已经存在位信息10011
    file.open(QIODevice::ReadOnly);//只读
    QDataStream output(&file);
    QBitArray bit(3);//此处我设置位数组的大小为3,我只想读取3位二进制信息
    output>>bit;//读取
    qDebug()<