如何判断机器CPU是大端模式还是小端模式

说明:这里面涉及到本机字节序和网络字节序的概念。A (本机字节序) ---- 网络字节序 ----B(本机字节序),其中本机字节序就是指机器是大端还是小端,网络字节序,我们都知道网络中会将内容封装成流,比如TCP/IP或者是 ISO,网络字节序是大端模式。引用网上的一张关于大小端的图片



  • 将整数存储后再以字符读出进行比较

#include <stdio.h>

int main(void) {
        unsigned int a = 0x12345678;
        unsigned char *p =(unsigned char *) &a;
        int i;
        printf("原输入数据为0x%0x\n", a);
        printf("存储后再读取的数为0x");
        for(i=0;i<4;i++){
                printf("%0x", p[i]);
        }
        printf("\n");
        if(p[0] == 0x12)
                printf("big edition\n");
        if(p[0] == 0x78)
                printf("little edition\n");
        return 0;
}

结果输出为:

原输入数据为0x12345678

存储后再读取的数为0x78563412

little edition

  • 使用union的共享内存的机制

扫描二维码关注公众号,回复: 3619553 查看本文章
#include<stdio.h>

union var
{
        char str;
        int data;
};
int main(void){
    union var endian;
    endian.data=0x01020304;
    if(endian.str==0x01)
    {
        printf( "此机器是大端!\n");
    }
    else if(endian.str==0x04){
        printf("此机器是小端!\n");
    }
    else{
        printf(" 暂无法判断此机器类型!\n");
    }
}



猜你喜欢

转载自blog.csdn.net/banana1006034246/article/details/78021198