【发布时间】:2011-05-26 17:39:52
【问题描述】:
我需要处理如下形式的一些数据:
typedef struct{
unsigned n1 : 12;
unsigned n2 : 12;
unsigned n3 : 12;
unsigned n4 : 1;
unsigned n5 : 35;
} data;
我确保它们总计最多为 9 个字节。
但他们没有.. 将该结构的 9 个字节写入文件并将其读回并不会恢复所有数据,sizeof(data) 返回 16。
这里有什么问题?
【问题讨论】:
-
填充。无法保证编译器将如何分配这些位和/或在结构后插入多少填充。编译器喜欢在均匀边界上结束数据结构。构成均匀边界的因素取决于几个因素,其中最重要的是处理器架构。
标签: c struct bit-fields