楼上的说的有点让一般人看不懂,我来解释一下,这是字节存储顺序问题,一种是从高地址向低地址存储,另一种是从低位到高位;一个long正好是一个机器字(32位机器,1word=4byte),当存储顺序为从低到高是,数组存储到内存就变成0x04 0x03 0x02 0x01而将这个字的值读出就变成0x04030201
unsigned long变量正常在内存中占用4个Byte,内存中存放时候高位存放在较大的内存地址,低位存放在较小的内存地址。所以实际在内存中排列的顺序是01 02 03 04, 对应的32bit长度的变量数值就是0x04030201。