2011-04-05 52 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位值)的方式。對於大端,這些位從最重要的位置填充。對於小端,這些位從最不重要的位置填充。