打印

如何将变量指定以大端格式储存

[复制链接]
2648|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
st316|  楼主 | 2012-5-7 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问下,在Keil环境下,如何将某一变量指定为以大端格式储存?谢谢!
沙发
st316|  楼主 | 2012-5-7 18:12 | 只看该作者
在IAR里,有个“__big_endian”的

使用特权

评论回复
板凳
ilovezeno| | 2012-5-8 08:33 | 只看该作者
写个汇编小函数,一条指令就倒转bit顺序了

使用特权

评论回复
地板
梅花望青竹| | 2012-5-8 12:51 | 只看该作者
自己编写一个函数,换位就行了!

使用特权

评论回复
5
airwill| | 2012-5-8 15:40 | 只看该作者
Keil 提供这个函数 __REV_Word();
用的是 REV 指令.
不过要 Cortex-M3 内核

使用特权

评论回复
6
st316|  楼主 | 2012-5-9 09:03 | 只看该作者
5# airwill
我用的STM32,里面有也类似的__REV16()等。


但我是希望将某一块数据,例如一结构体指定以大端存储,这个结构体里可能有float或是unsinged int型。


对于float型数据,大端如果是这样存储的0x11 0x22 0x33 0x44,小端就是这样的0x44 0x33 0x22 0x11
对于uint型数据,大端如果是这样:0x11 0x22,小端就是0x22 0x11


上位机会读写这结构体里数据,但通讯协议是“大端的”(要求高地址存放的是低字节数据)。
问题就是,上位机读取float或是uint,我得分别对待,再进行字节顺序的转换,有些麻烦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

167

帖子

3

粉丝