大小端是指多字节数据在内存中的存储形式,大端:高字节在低地址,低字节在高地址,小端则正好相反。
无论大端、小端,多字节的数据的地址统一为低地址;
在linux系统中,可以在/usr/include/bits/endian.c中看到对对在编译器平台的大小端设定。
大小端是与操作系统和芯片密切相关的:
X86(INTELE,AMD):Little Endian
DEC ALPHA : Little Endian
WINDOWS :Little Endian
MAC OS :Bid Endian
LINUX :Little Endian
ARM : Little Endian
SUN SPARC : Big Endian
判断大小端:
#include<stdio.h>
int main(void)
{
unsigned int a = 0x01020304;
unsigned int b = 0x04030201;
char *ptr1 = &a;
char *ptr2 = &b;
if(*ptr1++==4 && *ptr1++==3 && *ptr1++==2 && *ptr1==1){
if(*ptr2++==1 && *ptr2++==2 && *ptr2++==3 && *ptr2==4)
puts("BYTE_ORDER:Little Endian");
}
else
puts("BYTE_ORDER:Big Endian");
return 0;
}