duobango-tinyNET,20121217,Endianness

网络杂学点

tnet_endianness.h涉及字节序,又称端序,尾序(英语:Endianness)。在计算机科学领域中,字节序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。

大端序(英:big-endian)或称大尾序。
小端序(英:little-endian)或称小尾序。

eg:0x0A0B0C0D
big-endian
地址增长方向  →
...     0x0A     0x0B     0x0C     0x0D     ...
little-endian
地址增长方向  →
...     0x0D     0x0C     0x0B     0x0A     ...


一般用于描述串行设备的传输顺序。网络协议中只有数据链路层的底端会涉及到。
小端序(先传低位)的串行协议

    RS-232
    RS-422
    RS-485
    USB

大端序(先传高位)的串行协议

    I2C协议
    SPI协议
    摩尔斯电码
    以太网

判断代码:
    // 判断大端序和小端序
    short word = 0x4321;
    //unsigned char t = (unsigned char)word;
    //printf("%d = t" ,t);
    //unsigned char* t = (unsigned char *)&word;
    //printf("%d = t" ,*t);
    bool isBigEnbian = ((*(unsigned char *)&word) != 0x21);

    if (isBigEnbian)
        printf("big-enbian");
    else
        printf("little-enbian");
++++++++++++++++++++++++++++++++++++++++++++++++

你可能感兴趣的:(duobango-tinyNET,20121217,Endianness)