该文中描述了通过位运算的方式来获取int数据的各个位的内容。
本文通过unsigned char*的方式获取每个字节
uint32_t num = 3232299786; //0xC0A8FB0A
uchar *pt = (uchar*)#
printf("%02x\n",pt[0]&0xFF);//不进行&运算也可以
printf("%02x\n",pt[1]&0xFF);
printf("%02x\n",pt[2]);
printf("%02x\n",pt[3]);
分析:用uchar指针指向一个多字节数据的第一个字节(低地址) ,然后,依次解引用。
注意:要进行强制类型转换。
以上是少字节指针,取多字节数据,同样,也可以用多字节指针取少字节数据:
char ch[4]= {0x0A,0xFB,0xA8,0xC0};
uint16_t *pr = (uint16_t*)ch;
printf("%x\n",pr[0]);
printf("%x\n",pr[1]);
小结:uint16_t是每次取一个字 (2个字节)的大小
指针强制类型转换赋值后,就可以通过数组下标来取数了。
其他示例可参照该文。