大小端是指数据在计算机内存中的存储顺序,也就是字节序(endianness)。大小端是不同的对于数据在内存地址中的存放方式,不同的处理器(平台)的数据存储方式是不同。
大小端和字节序的关系
大端模式:数据的高位字节存储在内存的低地址部分,而低位字节存储在内存的高地址部分。数据的高位存储在内存的低字节。ARM/PowerPC等处理器采用大端模式
小端模式:数据的高位字节存储在内存的高地址部分,而低位字节存储在内存的低地址部分。Intel架构处理器采用小端模式。
模式 | 大端模式 | 小端模式 |
---|---|---|
地址: | 0x00 0x01 0x02 0x03 | 0x00 0x01 0x02 0x03 |
数据: | 0x12 0x34 0x56 0x78 | 0x78 0x56 0x34 0x12 |
字节序的概念对于处理多字节数据非常重要,因为它决定了如何将这些数据从内存中读取和写入到寄存器或文件中。
字节序对应着内存的存储(组织)模式,如网络字节序采用大端模式。
字节序只是对内置的数据类型而言(int、short、double、long….char)而对于char而言由于其本身只有一个
字节则字节序和存储模式对其不影响。(因此字符串在跨平台传输时不用考虑字节序)
单字节内纯中的比特为不受字节序的影响,大于1个字节的数据类型,字节序才对其有影响。