#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)?