对于多字节数据,由于数据是以字节为单位存储,需要连续的多字节存储空间存储,并且连续内存空间有高低地址之分,而数据以字节有高低位之分,数据在内存中有两种存储方式:
1.
- 小端存储:数据的低位存储在内存的低地址端,数据的高位存储在内存的高地址端;
2.
- 大端存储:数据的低位存储在内存的高地址端,数据的高位存储在内存的低地址端。
#include <stdio.h>
int main()
{
int i;
int a = 1; //数据由高到低位数据分别为:0x00、0x00、0x00、0x01
char *p = &a; //使用char类型指针,可以取存储空间中低地址空间数据
/* 利用指针判断数据的大小端存储 */
if (*p != 0) { /* 所取的数据为0x01(低地址数据为数据的低位)说明为小端存储 */
printf("lit\n");
} else {
printf("big\n");
}
a = 0x12345678;
for (i = 0; i < sizeof(int); i++) {
printf("%x ", *(p++)); //*p; p++;
}
printf("\n");
}