大小端模式(共用体union测试、指针测试)

存储系统中的大小端模式

  • 区分大小端

     0x01

     高位对数据低字节-------大端

     B3     B2    B1    B0

     01      00    00     00

     高位对数据高字节-------小端

     B3     B2    B1    B0

     00      00     00    01

     C51单片机内部存储采用大端模式ARM采用小端模式,intel大部分采用小端

  •  代码检测当前环境的大小端模式

     方法一:共用体测试

     方法二:指针方式测试

#include

union test
{
   int a;
   char b;
};

//大端模式返回0,小端模式返回1
int is_little_endian(void)
{
    union test u1;
    u1.a=1;
    return u1.b;
}

//指针测试方法
int is_little_endian2(void)
{
    int a=1;
    char b=*((char *)(&a));
    return b;
}
int main()
{
    int ret=-1;
    ret=is_little_endian();
    if(1==ret)
    {
        printf("小端模式\n");
    }
    if(0==ret)
    {
        printf("大端模式\n");
    }
    return 0;
}

 能实现测试的关键是共用体里面的char读取时是从低位开始读取

  如果1放到了低位,那么返回1,即小端模式

  • 通信系统中的大小端模式

       后续添加。。。。

你可能感兴趣的:(C语言)