字节序
定义:字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。
两种常见表示方式(还有其它的):
Little endian
简写:LE
常见翻译:小端序,低端序
解释:将低序字节存储在起始地址。就是高位值放在存储(可以认为是内存)的高位,低位值放在存储的低位,
即:顺序写入到内存中。最符合人的思维,低位高位对应内存地址的高位低位。
Big endian
简写:BE
常见翻译:大端序,高端序
解释:将高序字节存储在起始地址。地址低位存储值的高位,地址高位存储值的低位。
即:一个二进制数,那么从高位到低位顺序写到内存中(内存是从低位到高位的,我们写数字的时候是从高位到低位)。
所以这种方式是最直观的。
示例:
16进制数:OX12345678 (正常的这种写法,相当于高位在前面)
内存地址低位----->内存地址高位
BE 12 34 56 78
LE 78 56 34 12
注:是按照字节存储的。
十进制数300的表示:
300=256+32+8+4= 00000001 00101100 = OX012C
内存地址低位----->内存地址高位
BE 01 2C = 00000001 00101100
LE 2C 01 = 00101100 00000001
网络字节序:
与系统、CPU 没有关系的,采用的是BE 排序方式。
不同的系统和CPU 字节序都不同,所有必须要有转化的方式,不然收到的数据就不对了,可以查阅相关资料。