大端序(big endian):高序字节存储在低地址(指CPU对操作数的存放方式是将数据的高位存放在内存中的低地址,而数据的低位存放在内存中的高地址。)
小端序(little endian):低序字节存储在低地址(指CPU对操作数的存放方式是将数据的低位存放在内存中的高地址,而数据的低位存放在内存中的搞地址。)
大多数ARM处理器都是采用的小端模式,网络中传输的数据必须按网络字节序,即大端序。
那就就来测试一下,首先测试PC机,win10系统,vs2010测试
代码如下:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int n=0x87654321;
if(*(char *)&n==0x21)
{
printf("little enbian\n");
}else{
printf("big endian");
}
while(1);
return 0;
}
输出结果:
内存中的数据存放:
字节序是小端模式
再测试arm芯片stm32f207 ,keil中测试:
串口没有印出来,那就打个断点测下吧
也是小端模式,内存中的数据是这样的