为什么在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_hl不应该在ip_v之后传输吗
发布于 2011-04-20 22:05:09
Endianess还会影响编译器在结果结构的字节中放置位字段字段的方式(末尾的":4“表示它只有4位值)。对于big-endian,这些位从最重要的位开始填充。对于小端,这些位从最低有效位开始填充。
https://stackoverflow.com/questions/5559240
复制相似问题