想看看苹果系统的数据存储是大端存储还是小端存储:
首先小端,就是把低位存放在低地址。如0x 12345678,这个32位的十六进制数,从高位到低位依次是 0x 12, 0x 34,0x 56,0x 78;采用小端方式:最低为 0x 78 在最前面,故而内存中从低地址到高地状依次是0x 78,0x 56, 0x 34, 0x 12;
大端方式亦然。比较符合人的理解,高位在内存中的低地址,故而内存中从低地址到高地状依次是0x 12,0x 34, 0x 56, 0x 78;
很简单,写一个union ,联合里的数据类型公用一块内存,不同时间只能有一种数据类型,我们定义一个包含int 类型和char 类型的联合,给它赋值一个int i = 1;然后查看char 类型的ch 的值,如果是小端方式存储,内存中从低地址到高地状依次(0x 01,0x 00,0x 00,0x 00),那么,char 类型的ch 截取低地址的0x 01。反之,大端内存中从低地址到高地状依次(0x 00,0x 00,0x 00,0x 01),会截取到 低地址的0x 00;
地址偏移
大端模式 小端模式
0x00 12(OP0) 78(OP3)
0x01 34(OP1) 56(OP2)
0x02 56(OP2) 34(OP1)
0x03 78(OP3) 12(OP0)
1 //判断系统大小端存储的方法 2 int checkSystem() { 3 union check{ 4 int i; 5 char ch; 6 } c; 7 c.i = 1; 8 return (c.ch == 1);// 0x 01 00 00 00 9 } 10 int main(int argc, const char * argv[]) { 11 int check = checkSystem(); 12 if (check == 1) { 13 printf("小端模式存储 ");// 14 }else { 15 printf("大端模式存储 "); 16 } 17 18 return 0; 19 }
结果发现苹果采用小端方式存储数据。