【来源】http://www.meilei007.cn/endian/
Big Endian是按照非传统思维方式来存储数据,比方说,0x1234, 内存低位先存储数据的高位0x12, 再到下一个高位地址空间存储数据的低位0x34。每一个内存空间里面是按照Little Endian的方式来存储的不存在大小端。
Little Endian恰好相反,对于0x1234,内存低位先存储数据低位0x34,再到下一个高位地址空间存储数据高位0x12。
有一个口诀可以记住,Little Endian是正常存储,低低高高,低位存在低位,高位存在高位。
写了一个的简单算法来判断本机大小端情况:
#include <stdio.h>
#include <stdbool.h>
bool isBigend()
{
int data = 0x1234;
char* test = (char*)data;
return (test == 0x12);
}
void main()
{
if(isBigend())
printf("Big Endian!\n");
else
printf("Little Endian!\n");
}