代码改变世界

c语言检测cpu大小端模式

2013-04-16 19:02  放作夥  阅读(1198)  评论(2编辑  收藏  举报

 

方法一:使用C中的共用体:

 

 bool IsLitte_Endian()

{

union w{

int a;

char b;
}c;

c.a=1;

return (c.b==1);//若处理器是Big_endian的,则返回false;若是Little_endian的,则返回true。

}

 

方法二:强制类型转换

bool IsLitte_Endian()

{

int a = 0x12345678;//int占用4字节,16进制的话一位相当4位2进制,4*8=32bit=4byte

short *p=(short*)&a;//short占用2字节

return (0x5678 == *p);//若处理器是Big_endian的,则返回false;若是Little_endian的,则返回true。

}

 

PS:x86架构cpu用小端模式,arm架构的用大端模式