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);