IP头帮忙?

时间:2011-04-05 22:16:51

标签: ip endianness

为什么struct ip被定义为

#if __BYTE_ORDER == __LITTLE_ENDIAN
    unsigned int ip_hl:4;       /* header length */
    unsigned int ip_v:4;        /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
    unsigned int ip_v:4;        /* version */
    unsigned int ip_hl:4;       /* header length */
#endif

小端和大端仅影响多字节值。为什么我们在ip_hl之前存储ip_vip_hl之后不应该ip_v传输?

1 个答案:

答案 0 :(得分:1)

Endianess还影响编译器在结果结构的字节内放置位字段字段的方式(结尾处的“:4”表示它的值仅为4位)。对于大端,这些位从最重要的位置填充。对于little-endian,这些位从最不重要的位置填充。