簡體   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