1.概念
Little endian
简写:LE
常见翻译:小端序,低端序
解释:将低序字节存储在起始地址。就是高位值放在存储(可以认为是内存)的高位,低位值放在存储的低位,
即:顺序写入到内存中。最符合人的思维,低位高位对应内存地址的高位低位。
Big endian
简写:BE
常见翻译:大端序,高端序
解释:将高序字节存储在起始地址。地址低位存储值的高位,地址高位存储值的低位。
即:一个二进制数,那么从高位到低位顺序写到内存中(内存是从低位到高位的,我们写数字的时候是从高位到低位)。
所以这种方式是最直观的。
iOS中一般是Little endian
比如int数据bit大端许写法如下
void BufferPutInt(MapBuffer *pBuffer, int val) {
if (pBuffer->m_pPtr >= pBuffer->m_pEnd)
return;
pBuffer->m_pPtr[0] = (val >> 24);
pBuffer->m_pPtr[1] = (val >> 16);
pBuffer->m_pPtr[2] = (val >> 8);
pBuffer->m_pPtr[3] = (val);
pBuffer->m_pPtr += 4;
// MEMCPY(pBuffer->m_pPtr, &val, sizeof(int));
// pBuffer->m_pPtr += sizeof(int);
}