大端小端

  • 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
  • 我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
  • Note:采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。

#include
int main()
{
    int a = 0x01020304;
    char *b = (char *)&a;

    printf("%08X\n", a);
    printf("%02X,%02X,%02X,%02X \n", b[0], b[1], b[2], b[3]);
    printf("%X,%X,%X,%X \n", (unsigned int )&b[0], (unsigned int )&b[1], (unsigned int )&b[2], (unsigned int )&b[3]);

    union w{
        int c;
        char d[4];
    }e;
    e.c = 0x01020304;
    printf("%02X,%02X,%02X,%02X\n",e.d[0],e.d[1],e.d[2],e.d[3]);
    return 0;
}
 

x86:小端,起始地址存放低位字节(little-endian

01020304
04,03,02,01
3FE37A7C,3FE37A7D,3FE37A7E,3FE37A7F
04,03,02,01

 

大端,起始地址存放高位字节(big-edian

01020304
01,02,03,04
BE805D48,BE805D49,BE805D4A,BE805D4B
01,02,03,04

 

你可能感兴趣的:(网络开发知识)