#pragma pack(1)
在定义字段6-bit
并将其假定为8-bit
. 我读了这个问题来解决我的问题,但它根本没有帮助我。
在Visual Studio 2012中,我定义struct
了以下用于保存Base64
字符:
#pragma pack(1)
struct BASE64 {
CHAR cChar1 : 6;
CHAR cChar2 : 6;
CHAR cChar3 : 6;
CHAR cChar4 : 6;
};
现在我得到了它的大小sizeof
,但结果不是我所期望的:
printf("%d", sizeof(BASE64)); // should print 3
结果 :4
我期望得到3
(因为6 * 4 = 24
,所以24
位是3
字节)
事件我用1-bit
字段测试它并得到正确的大小(1字节):
#pragma pack(1)
struct BASE64 {
CHAR cChar1 : 2;
CHAR cChar2 : 2;
CHAR cChar3 : 2;
CHAR cChar4 : 2;
};
实际上,为什么6-bit
假设8-bit
与#pragma pack(1)
?