打印部分二进制序列c++

Printing part of binary sequence c++

本文关键字:c++ 二进制 打印部      更新时间:2023-10-16

我已经从二进制文件读取到一些结构指针。在我的结构中,有几个unsigned int整数。这是我的结构体:

编辑

   typedef unsigned int             INT32U;
typedef struct {
        INT32U var1 : 16;               
        INT32U var2 : 8;                       
        INT32U var3 : 1;                        
} myStruct;

typedef struct{
    myStruct  hdr;
    INT32U additionalVar;
}MyStructSecond;

和我读取二进制文件以下行:

    myStructSecond * pack;
FILE * stream = fopen(argv[1],"rb");
fread((INT32U*)pack->hdr,1,sizeof(myStruct),stream);

现在我想访问var1的值,但我不知道我如何做到这一点?

有人来帮我吗?

这将是一个可怕的错误-您创建了一个指针,但没有实际的结构体。

你想:

myStruct pack;
FILE * stream = fopen(argv[1],"rb");
ReadFile(stream, &pack, sizeof(pack));

然后您可以访问这些值,例如pack.var1

我有一种感觉,这个问题是由于在调用ReadFile时使用了一个没有正确初始化的指针引起的。

我建议

myStruct pack;
FILE * stream = fopen(argv[1],"rb");
ReadFile(stream, &pack, sizeof(myStruct));

更新回应OP.

评论
myStructSecond pack;
FILE * stream = fopen(argv[1],"rb");
fread(stream, &pack.hdr, sizeof(myStruct));