背景原因:C语言中除了8bit的char,还有16bit short型,32bit long型,16bit or 32bit int型变量。由于16位32位CPU的寄存器宽度大于一个字节8bit,那么必然存在如何将多个字节安排的问题。因此就导致大端存储模式和小端存储模式。
简而言之:
大端模式:内存低地址存放数据的高位,内存高地址存放数据的低位;
小端模式:内存低地址存放数据的地位,内存高地址存放数据的高位;如定义16位int i=0x1234
网络字节序:
TCP/IP协议规定了在网络上必须采用网络字节顺序,先收到的字节为高位,最后收到的字节为地位,也就是大端模式。由于数据传输的两端对应不同的硬件平台,采用的存储字节顺序可能不一致。char型只占1字节,无所谓大端和小端。而对于非char型,必须在数据发送到网络上之前将其转换成大端模式。
基于x86CPU的计算机使用是小端模式。大部分操作系统(windows、linux)都是小端模式。少部分,如MAC OS是大端模式。