现代CPU的累加器一次至少能装载4字节的数据。一个int类型占据4个字节(假设在32位系统上),那么这4字节在内存中排列的顺序将影响到它被累加器装载成的整数的值。这既是字节序的问题。字节序分为大端字节序和小端字节序。
假设有int a = 0x11223344
大端序:
整数高位字节在低地址内存,整数低位字节在高位地址。

小端序:
整数高位字节在高地址内存,整数低位字节在低位地址。

一般来说,现代PC采用小端序,因此又称为主机字节序。两个字节序不同的主机之间直接传递数据必然会出错。那么解决的办法就是:发送端总是把要发送的数据转换为大端序,接受方根据自己的字节序来决定是否需要将收到的数据进行转换(小端机需要转换,大端机不需要转换)。需要注意的是,同一个主机上的两个进程之间通信,也要考虑字节序的问题(比如一个用C写的,一个用JAVA写的,JAVA虚拟机采用的是大端序)。
下面这个小程序可以用来检查机器是大端序还是小端序

#include<stdio.h>
int main()
{
	int a = 0x11223344;
	char *p;
	p = (char*)&a;
	printf("%x", *p);
	getchar();
	return 0;
}

程序打印出44说明是小端序,打印出11说明是大端序。