判断字节序

223 阅读1分钟

方法1:

int main(void)
{
    int i = 0x12345678;
    if(*((char*)&i) == 0x12)
        printf("大端");
    else
        printf("小端");
    return 0;
}

方法2,利用联合:

int is_little_endian_b(void)
{
    union endian_un{
        short var;
        char bits[sizeof(short)];
    };
 
    union endian_un flag;
    flag.var = 0x0102;
 
    //判断低位和高位的存储内容,确定是何种方式
    if(sizeof(short) == 2){
        if(flag.bits[0] == 1 && flag.bits[1] == 2)
            return 0;
        else if(flag.bits[0] == 2 && flag.bits[1] == 1)
            return 1;
        else
            return -1;
    } 
     
    return -1;
}