69,371
社区成员
发帖
与我相关
我的任务
分享
C++怎样判别大端小端
使用宏的方法:
const int endian = 1;
#define is_bigendian() ( (*(char*) &endian) == 0 )
#define is_littlendbian() ( (*(char*) &endian) == 1 )
方法二:
bool IsLittleEndian()
{
union
{
long val;
char Char[sizeof(long)];
}u;
// 1-小端(Intel); 0-大端(Motor)
u.val = 1;
if ( u.Char[0] == 1 )
{
// 小端
return true;
}
else if ( u.Char[sizeof(long)-1] == 1 )
{
// 大端
return false;
}
throw( "Unknown!" );
}
static inline int Sex()
{
const int probe = 1;
return !*(const char *)&probe;
}
bool IsBig_Endian()
//如果字节序为big-endian,返回true;
//反之为 little-endian,返回false
{
unsigned short test = 0x1122;
if(*( (unsigned char*) &test ) == 0x11)
return TRUE;
else
return FALSE;
}//IsBig_Endian()