大端就是数据的高字节存放在低地址,低字节存放在高地址;小端则正好相反。比如一个占用4字节的int型数据0x12345678放在起始内存0x4000中的对比:
至于系统是大端还是小端也很容易测试:
#include <stdio.h>
union Test{
short s;
char c[2];
};
int main()
{
union Test test;
test.s = 0x1234;
if(test.c[0] == 0x34 && test.c[1] == 0x12)
printf("小端模式\n");
else if(test.c[0] == 0x12 && test.c[1] == 0x34)
printf("大端模式\n");
else
printf("未知错误\n");
return 0;
}
在需要考虑内存的高低字节分布的时候最好进行测试一下,有些架构的CPU大小端不是固定的,可以进行大小端的切换。