繁体   English   中英

带位域​​的结构填充

[英]structure padding with bit fields

我想用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位,我尝试使用无符号短型40位。

但是我只想使用36位。

有什么办法可以做到吗?

谢谢

对象的大小始终是sizeof(char)的倍数。 在大多数平台上, char保留8位。 要容纳36位,您将需要一个大小等于5*sizeof(char)的对象,您将获得40位。

您将需要大小的物体5保持33 - 40位。

许多机器的最小大小为8位,因此您无法以任何方式达到36位。 总是会有打包位,以使其达到8位,16位或32位边界。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM