大端序:高位字节在前(低地址),低位字节在后(高地址),属于人类读写数值的方法。
**小端序:**低位字节在前(低地址),高位字节在后(高地址),属于计算机读写数值的方式。
原因
首先,为什么会有小端字节序?
答案是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。
处理方式
一般字节序的问题由外部设备处理,即由从存储中进行读取的设备处理。
对于大端序:
x = buf[offset]<<8 | buf[offset+1];
符合人类理解,低地址存放的高位乘以位数,或运算把低位加上去。
对于小端序:
x = buf[offset+1] * 256 + buf[offset];
高地址存放的高位乘以位数,再把低地址存放的低位加上去。