#include<stdio.h>
#include<string.h>
#pragma pack(4)
int main()
{
unsigned char puc[4];
struct tagPIM //位断大小占2个字节
{
unsigned char ucPiml; //1
unsigned char ucData0 : 1; //1
unsigned char ucData1 : 2; //
unsigned char ucData2 : 3; //
}*pstPimData;
pstPimData = (struct tagPIM*)puc;
memset(puc, 0, 4);
pstPimData->ucPiml = 2; //0000 0010 因为ucPiml占一个字节,所以puc[0]里面存的就是00000010,因此puc[0]=0x00;
pstPimData->ucData0 = 3; //0000 0011 因为unData0只占一个字节,所以截取3的二进制序列低位的1个字节即1,存入到puc[1]的低位第一个字节
pstPimData->ucData1 = 4; //0000 0100 因为unData1占2个字节,所以截取4的二进制序列低位的2个字节即00,存入到puc[1]的从低位起第2、3字节
pstPimData->ucData2 = 5; //0000 0101 因为unData2占3个字节,所以截取5的二进制序列低位的3个字节即101,存入到puc[1]的从低位起第4、5、6字节
//最终puc[1]内的数字的二进制序列为:00101001 即0x29
printf("%0