字节序
(byte order)
和位序
(bit order)
字节序
(byte order)
和位序
(bit order)
在网络编程中经常会提到网络字节序和主机序,也就是说当
一个对象由多个字节组成的时候需要注意对象的多个字节
在内存中的顺序。
以前我也基本只了解过字节序,但是有一天当我看到
ip.h
中
对
IP
头部结构体
struct iphdr
的定义时,我发现其中竟然对
一个字节中的
8
个比特位也区分了大小端,
这时我就迷糊了,
不是说大小端只有在多个字节之间才会有区分的吗,为什么
这里的定义却对一个字节中的比特位也区分大小端呢
?
下面我们先看一下
struct iphdr
的定义,
后文会解惑为什么要
在一个字节中区分大小端。
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8
ihl:4,
version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
__u8
version:4,
ihl:4;
本文探讨了在网络编程中字节序和位序的重要性,特别是在处理多字节对象时的内存顺序。通常,大小端问题只涉及字节间的顺序,但结构体iphdr的定义揭示了一个字节内的位也可能需要考虑大小端。文章通过分析struct iphdr的定义,解释了为何在一个字节内区分位序的原因,并讨论了其在IP头部解析中的作用。
2074

被折叠的 条评论
为什么被折叠?



