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

[复制链接]
1791|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

粉丝
快速回复 在线客服 返回列表 返回顶部