1. 直接打印出指针占多少字节,4字节为32位系统,8字节为64位系统。
2. 大小端判断:
小端:低地址存放数的低位(如:X86)
大端:低地址存放数的高位(如:网络字节顺序)
(ARM大小端都支持)
假设数0x1234从0x0000开始存放,小端顺序为:
内存地址 | 存放内容 |
0x0000 | 0x34 |
0x0001 | 0x12 |
大端顺序为:
内存地址 | 存放内容 |
0x0000 | 0x12 |
0x0001 | 0x34 |
采用union判断,union的成员都是从低地址开始存放:
union U{ short a; char b; }; int main(){ U u; u.a=0x1234; puts(u.b==0x34?"Little endian":"Big endian"); }
如果是在linux下,可以直接使用宏:
printf("Little endian:%d\n",__LITTLE_ENDIAN);//in stdlib.h printf("Big endian:%d\n",__BIG_ENDIAN); printf("mine:%d\n",__BYTE_ORDER);