打印

两种将UINT32类型数据分成4个byte的方法,哪一个更有效率呢?

[复制链接]
1553|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
piaoliuzaiwai|  楼主 | 2014-1-3 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在写程序,一个模块送过来的数据是一次4个byte, 所以送过来的时候是一个UINT32 类型,那么我这边就需要将这四个byte 分离出来,
想到了两个方法,但不知道哪种方式效率会更好一些呢,嵌入式代码当然是越有效率越好?

例如:
UINT32 bar = 0x76543210;
typedef struct _foo
{
        UINT8 byte3;
        UINT8 byte2;
        UINT8 byte1;
        UINT8 byte0;
}foo;
第一种方法:
printf("[Byte3] = 0x%x ,[Byte2] = 0x%x ,[Byte1] = 0x%x ,[Byte0] = 0x%x .\n",\
        ((foo *)&bar)->byte3,((foo *)&bar)->byte2,((foo *)&bar)->byte1,((foo *)&bar)->byte0);
第二种方法:
printf("[Byte3] = 0x%x ,[Byte2] = 0x%x ,[Byte1] = 0x%x ,[Byte0] = 0x%x .\n",\
        ((UINT8)(bar>>24)&0xFF),((UINT8)(bar>>16)&0xFF),((UINT8)(bar>>8)&0xFF),((UINT8)(bar &0xFF));

朋友们都给点建议哈哈。。。

相关帖子

沙发
msblast| | 2014-1-4 10:26 | 只看该作者
用union最快

使用特权

评论回复
板凳
2008021148| | 2014-1-4 10:53 | 只看该作者
还特地定义了一个结构体 :L 直接数组强制转换一下啊

使用特权

评论回复
地板
ayb_ice| | 2014-1-4 16:21 | 只看该作者
ARM直接用左移右移的方法快

使用特权

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

本版积分规则

2

主题

19

帖子

0

粉丝