2011-04-05 51 views
0

为什么在结构IP的定义如下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_v之前存储ip_hlip_v之后不应该发送ip_hl

回答

1

Endianess还会影响编译器在生成的结构的字节内放置位域字段(最后的“:4”在端点意味着它只有4位值)的方式。对于大端,这些位从最重要的位置填充。对于小端,这些位从最不重要的位置填充。