日期:2014-05-16  浏览次数:20573 次

对于结构体ip的疑惑
在头文件<netinet/ip.h>中定义的结构体ip是这样的

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_v字段和ip_hl字段的位置互换?

------解决方案--------------------
大端字节序,小端字节序,我猜是用指针 加减的时候 统一方便吧
------解决方案--------------------
这个ip_v和ip_hl共用的同一个int类型的空间啊,当然要分大端和小端了,不然ip_v和ip_hl哪个是高四位 哪个是低四位 不就乱套了嘛