字节序
(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;