int 指针与unsigned char类型指针互转
#include <stdio.h>
#include <stdlib.h>int main(void){int a=(0x1<<24)|(0x2<<16)|(0x3<<8)|0x4; //0x1020304printf("16进制:%x\n",a);u_int8_t *p=(u_int8_t *)&a; //int指针转为unsigned char指针for(int a=0;a<4;a++){printf("%x\n",*(p+a)); //4,3,2,1}u_int8_t u[4]={4,3,2,1};int *p1=(int *)u;printf("%x\n",*p1); // 1020304return 0;
}
从输出可以看出:int的低字节存储在内存的低地址,这是小端存储
从这个例子可以看出:在内存中具有相同开始地址的数据都可以互相转换。
可以这样理解:c中的数据是从某一个起始地址开始的连续的一定长度的char数组。所以说,c编码就是对各种类型数组的操作。