小字节序:(比如x86体系) 数据的低字节放在低地址处,比如一个整型数0x12345678,在内存中的
分布为:
-----------
| 78 | xxxx_0000
-----------
| 56 | xxxx_0001
-----------
| 34 | xxxx_0002
-----------
| 12 | xxxx_0003
-----------
Little Endian
大字节序:(比如PowerPC体系) 数据的低字节放在高地址处,比如一个整型数0x12345678,在内存中的
分布为:
-----------
| 12 | xxxx_0000
-----------
| 34 | xxxx_0001
-----------
| 56 | xxxx_0002
-----------
| 78 | xxxx_0003
-----------
Big Endian
比如有如下结构体定义:
typedef struct
{
unsigned short Rsvd : 4; /* rsvd0. */
unsigned short Tgid : 6; /* this is the group number. */
unsigned short Index : 6; /* this is index for this com use. */
}My_Struct;
u16 value = 0x1234;
My_Struct *p;
p = (My_Struct *)&value;
(1)在小字节序的系统上,它的分布如下:
15 10|9 4|3 0
---------------------------------
| Index | Tgid | Rsvd |
---------------------------------
value的值为0x1234,则:
0001 0010 0011 0100
Rsvd : 0x04
Tgid : 0x23
Index : 0x04
(2)在大字节序的系统上,它的分布如下:
15 12|11 6|5 0
--------------------------------
| Rsvd | Tgid | Index |
--------------------------------
value的值为0x1234,则:
0001 0010 0011 0100
Rsvd : 0x01
Tgid : 0x08
Index : 0x34