记一下大端字节序和小端字节序

首先,建议大家看原文 理解字节序

在这里记录我自己的理解。

大端字节序和小端字节序都只是数据在计算机的存储顺序不同而已。需要知道的是,数据是以字节为单位存储在计算机中的,那么如果多个字节的数据是应该高位的字节放在地位字节的前面还是后面呢?

我们人类当然是习惯高位在地位前面了,但是计算机却不是这样的。所以才会出现有大端字节序和小端字节序之分。

加上阮一峰老师的话

“只有读取的时候,才必须区分字节序,其他情况都不用考虑。”

举的例子也很简单明了,
举例来说,处理器读入一个16位整数(也就是两个字节了)。如果是大端字节序,就按下面的方式转成值。就是将高位的1个字节左移8位加上低位字节。

# 大端字节序
x = buf[offset] << 8 + buf[offset+1]
# 小端字节序
x = buf[offset+1] << 8 + buf[offset]

你可能感兴趣的:(理论基础)