如有转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/45151339。
作者:super_bert@csdn
先上两种判断主机字节序的方法(C描述),再详细解释。
判断原理:
1.Union成员本身是被存放在相同的内存空间中(即共享内存),union联合体占用内存大小等于该union的最大成员的大小,所以在一个有char型和int型变量的union中可以通过取值判断出主机字节序;
2.将一个char(BYTE)型变量和一个int型变量存放在同一内存开始地址处,读取整型数据,根据数据值可以判断出char型变量在int型变量的高位还是低位,从而判断主机字节序。
原理1,DEMO
#include <stdio.h>
typedef union student_s
{
int i;
unsigned char ch[4];
}student_t;
int main(int argc, char *argv[])
{
student_t student