kevin8 发表于 2010-10-28 15:54:10

大家帮忙瞧一下,这个函数能检测处理器是大端还是小端吗?

自己整了这个函数,在STM32上是返回1的,问问大家这样写对吗?
int checkendian()
{
        unsigned int a=0xFF00;
        char* p=(char*)&a;
        if(*p==0x00)
                return 1;//小端
        else
                return 0;//大端
}

rainyss 发表于 2010-10-28 16:08:16

可以

sblpp 发表于 2010-10-28 16:42:36

可以
也可以用联合的方式来测试
比如
union
{
    int a;// = 0x12345678;
    unsigned char b;
};

a = 0x12345678;
printf("b 1 is %x\n",b);

kevin8 发表于 2010-10-28 17:00:50

回复【2楼】sblpp
可以
也可以用联合的方式来测试
比如
union
{
    int a;// = 0x12345678;
    unsigned char b;
};
a = 0x12345678;
printf("b 1 is %x\n",b);
-----------------------------------------------------------------------

联合体的方法在网上见到过,这个方法是天才的方法,不容易想出来
页: [1]
查看完整版本: 大家帮忙瞧一下,这个函数能检测处理器是大端还是小端吗?