大小端指的是在存储器中存储数据的字节顺序。C语言编程过程中,我们会定义各种类型的数据,比如8bit的char型,16bit的short型或者32bit的long型,在这个过程当中不可避免的会遇到多个字节排序的问题,为了解决这个问题大端存储模式和小端存储模式诞生了。
大端模式,首先存储MSB字节,高字节存储在低地址;小端模式,首先存储LSB字节,低字节存储在低地址。ARM架构的芯片一般默认使用小端模式。
举个例子如果要存储的32bit数据位:0x11223344,那么11是高字节,44是低字节。
大端模式:
地址 | 数据 |
0x20000000 | 0x11 |
0x20000001 | 0x22 |
0x20000002 | 0x33 |
0x20000003 | 0x44 |
小端模式:
地址 | 数据 |
0x20000000 | 0x44 |
0x20000001 | 0x33 |
0x20000002 | 0x22 |
0x20000003 | 0x11 |
这里我只是简单介绍在存储中的例子,事实上在一些通信协议,Modbus或者CAN协议之中,也存在着大小端传输。