欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大小端判别三种方法

程序员文章站 2022-05-23 09:19:40
...

1.联合体

#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 联合法*****/
int main()
{
    union test
    {
        int x;
        short y;
    };
    union test a;
    a.x=0x00001111;
    if(a.y==0x1111)
    {
        printf("little endian");
    }
    else
        printf("big endian");
    return 0;
}

2.指针

#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 指针法*****/
int main()
{
    int a=1;
    unsigned char* ap=(unsigned char*)&a;
    if(*ap)
    {
        printf("little endian");
    }
    else
        printf("big endian");
    return 0;
}

指针强制类型转换后指向数据的低地址位。因此,如果是小端字节序,强制转换后指针指向地址上的值为1。相反,如果是大端字节序,指针指向地址上则为0。

3.直接强制类型转换

#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 强制类型转换法*****/
int main()
{
    int a=0x00001111;
    short b=(short)a;
    if(b==0x1111)
    {
        printf("little endian");
    }
    else
        printf("big endian");
    return 0;
}