我是Qt的新手。我必须读取包含标题的二进制文件。但在某些位置,我必须读取15位和17位整数。是否有任何函数可以从qt中的文件中读取n位? PS:我使用Matlab通过 fread 和 ubit n
阅读此文件答案 0 :(得分:0)
Qt有一个C ++界面。在C ++中,二进制文件访问是基于八位字节的。您一次只能读取8位。因此,您必须在更高级别的逻辑中组装整数。
答案 1 :(得分:0)
您只能读取,并且通常处理至少8位的值,即char或1个字节。
您可以对一个字节内的单个位执行操作。
在您的情况下,您应该读取足够数量的字节,然后重新编译为结构。
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