Ip头帮助?

Ip头帮助?,ip,endianness,Ip,Endianness,为什么结构中的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定义为

#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\u v
之前存储
ip\u hl
,而
ip\u hl
不应该在
ip\u v
之后传输吗?

尾数也会影响编译器在结果结构的字节内放置位字段字段的方式(末尾的“:4”表示它只值的4位)。对于big-endian,位从最高有效位开始填充。对于little endian,位从最低有效位开始填充