上源码
#include <iostream>
using namespace std;
struct adts_Header
{
unsigned short syncword1:12;
unsigned short syncword2:12;
unsigned short syncword3:8;
};
int main() {
unsigned int d=0xff10ffff;
unsigned int* pd=&d;
adts_Header* ah=(adts_Header*)pd;
printf("%x\n",d);
printf("%x\n",*pd);
printf("%x\n",*ah);
printf("%x\n",ah->syncword1);
printf("%x\n",ah->syncword2);
printf("%x\n",ah->syncword3);
return 0;
}
输出如下:
ff10ffff
ff10ffff
ff10ffff
fff
f10
cc
1 关于小端对齐 就是整数d在内存里完全是反着放
2 关于位域就是按照内存地址直接取 每个位域的变量必须跟下一个变量内存对齐
3 cc实际上是第五个字节 也就是windows debug下的软中断