关于C语言的位段,该怎么处理

关于C语言的位段怎么把下面结构体内的位段unsigned a:4unsigned b:4 拼在一个char里面,a为高4位,b为第四

关于C语言的位段
怎么把下面结构体内的位段 unsigned a:4; unsigned b:4; 拼在一个char里面,a为高4位,b为第四位



typedef struct _S
{
  unsigned a:4;
  unsigned b:4;
  unsigned c:22;
  unsigned q:1;
  unsigned h:1;
  //unsigned i:33; // 错误:‘i’ 的宽度超过它自身的类型
  //unsigned i:1;当多出此行时,该结构体大小由4变为8,因为此行之前正好为32位
} S;



[解决办法]
unsigned char ret = S.a<<4 | S.b
[解决办法]
位域的具体实现依赖平台