pc机和stm32的大小端测试

大端序(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;
}

输出结果:pc机和stm32的大小端测试

内存中的数据存放:pc机和stm32的大小端测试

字节序是小端模式

 

再测试arm芯片stm32f207 ,keil中测试:

串口没有印出来,那就打个断点测下吧

pc机和stm32的大小端测试

也是小端模式,内存中的数据是这样的

pc机和stm32的大小端测试