我想制作一个 36 位的结构,所以我尝试了下面的结构
#pragma pack(push, 1)
struct{
unsigned int a : 5;
unsigned int b : 1;
unsigned int c : 11;
unsigned int d : 2;
unsigned int e : 2;
unsigned int f : 1;
unsigned int g : 8;
unsigned int h : 6;
}HDR;
#pragma pack(pop)
sizeof(HDR): 5, 8*5 = 40 位,我尝试使用 unsigned short 仍然是 40 位。
但我只想使用 36 位。
有什么办法可以做到吗?
谢谢
最佳答案
对象的大小总是sizeof(char)
的倍数. char
持有 8
大多数平台上的位。容纳36
位,您将需要一个大小等于 5*sizeof(char)
的对象然后你得到 40
位。
您需要一个大小为 5
的对象持有33
- 40
位。
关于c - 位域结构填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23640714/