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

相关文章:

  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-05
  • 2022-03-06
  • 2021-12-30
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-11-11
相关资源
相似解决方案