大端小端

大端(Big-Endian)小端(Little-Endian)不同的CPU将数据存储在内存中顺序不同造成的,大端:数据高位存储在内存地址的低位, 数据的低位存储在内存地址的高位.
 
我们假设内存从0x4000开始存放一个16位的数0x1234以下是大端和小端,
 
大端情况:
0x4000 0x4001
12 34
 
小端情况:
0x4000 0x4001
34 12
 
可以通过下面函数判断大端和小端:
bool Big_Endian()
{
    union Endian
    {
        long l ;
        char c[ sizeof(long )];
    }e ;

    e.l = 1;

    return (e.c[ sizeof(long) - 1] == 1);
}

bool Little_Endian()
{
    union Endian
    {
        long l ;
        char c;
    }e;

    e.l = 1;

    return (e.c == 1);
}
 
由于存在大端和小端区别,因此在进行socket通信时,一定要注意转换成网络字节序.
原文地址:https://www.cnblogs.com/ourroad/p/3374001.html