写个程序判断系统是32位or64位及大端or小端字节序


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM