读取qt中的n位(不是字节)?

时间:2017-07-11 08:41:27

标签: qt binaryfiles

我是Qt的新手。我必须读取包含标题的二进制文件。但在某些位置,我必须读取15位和17位整数。是否有任何函数可以从qt中的文件中读取n位? PS:我使用Matlab通过 fread ubit n

阅读此文件

2 个答案:

答案 0 :(得分:0)

Qt有一个C ++界面。在C ++中,二进制文件访问是基于八位字节的。您一次只能读取8位。因此,您必须在更高级别的逻辑中组装整数。

答案 1 :(得分:0)

您只能读取,并且通常处理至少8位的值,即char或1个字节。

您可以对一个字节内的单个位执行操作。

在您的情况下,您应该读取足够数量的字节,然后重新编译为结构。

Bitfield

struct {
   unsigned double widthValidated : 15;
   unsigned double heightValidated : 17;
} MyStruct;

MyStruct * ptr = (MyStruct *) &myDouble;

您也可以使用位移:

double myValue;
double a = myValue & 0x7FFF; // 15 first bits
double b = (myValue >> 15) & 0x7FFFF; // 17 bits after the 15 first