关于C/CPP使用结构体中位域的一些笔记

Lina0205 / 2024-10-13 / 原文

工作中软件通讯用到了结构体,在解析时,对应第一个变量在高位还是低位一直记不住。故计此博客作为笔记

typedef struct _stBin
{
	BYTE bOne : 2; 
	BYTE bTwo : 2;
	BYTE bThree : 2;
	BYTE bFour : 2; 
	_stBin()
	{
		bOne = 0;
		bTwo = 0;
		bThree = 0;
		bFour = 0;
	}
}stBin;

以上述结构体为例

stBin a;
a.bFour = 0;
a.bThree = 1;
a.bTwo = 2;
a.bOne = 3;

BYTE b = 0;
::CopyMemory(&b, &a, sizeof(stBin));

执行以上程序后a,b的值分别为:

可以看到成员变量是从上到下占用从低到高的比特位;