大端序(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的大小端测试

 

 

 

相关文章:

  • 2021-12-02
  • 2021-11-23
  • 2021-07-29
  • 2021-10-20
  • 2021-12-29
  • 2021-12-30
  • 2022-12-23
  • 2021-12-06
猜你喜欢
  • 2021-11-26
  • 2022-12-23
  • 2022-02-08
  • 2021-10-14
  • 2022-01-03
  • 2021-09-25
相关资源
相似解决方案