数据存储的大小端格式问题记录

15 篇文章 0 订阅
15 篇文章 2 订阅

大小端定义:

大端格式:即数据的高位存在低地址,如0x11223344,在存储器中从低到高的存储顺序就是0x11,0x22,0x33,0x44

小端格式:即数据的高位存在高地址,如0x11223344,在存储器中从低到高的存储顺序就是0x44,0x33,0x22,0x11

大端格式会更好理解一点,因为它是顺序的;小端格式会需要转换一下。

STM32的内存和flash都是按照小端格式存储的。

如何判别大小端:

1.判别RAM的大小端

方法1:定义一个32位变量,给其赋值0x11223344,再定义一个char型指针,将其指向32位变量的首地址,再打印出该指针所指向位置的内容,如果是0x44则为小端,反之则为大端,如下:

int datatt=0x11223344;
u8 *ptr=(u8 *)&datatt;
printf("ptr=%x\n",ptr[0]);

方法2:定义一个联合体:

union test_union
{
    u8 data_byte[4];
    u32 data_int;
}

给其中的 data_int 赋值0x11223344,然后再打印出 data_byte[0],如果是0x44即为小端格式,反之则为大端。

2.判别flash的大小端

将上述方法1中的32位变量改为只读的(全局变量),其余操作一样;因为只读变量是存储在flash中的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值