一、背景
对于跨越多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在内存中如何排列这些字节。在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址。例如,假设一个类型为 int 的变量 x 的地址为 0x100, 也就是说,地址表达式&x的值为0x100那么,(假设数据类型 int 为 32 位表示)x的4个字节将被存储在内存的 0x100、0x101、0x102 和 0x103 位置。
二、大端法和小端法
例子:
假设变量x的类型为int,位于地址0x100处,它的十六进制值为0x01234567。地址范围 0x100~0x103 的字节顺序依赖于机器的类型:
注:在字 0x01234567 中,高位字节的十六进制值为0x01,而低位字节值为 0x67。
某些机器选择在内存中按照从最低有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高有效字节到最低有效字节的顺序存储。前一种规则----最低有效字节在最前面的方式,称为小端法(little endian)。后一种规则-----最高有效字节在最前面的方式,称为大端法(big endian)。