今天在写程序,一个模块送过来的数据是一次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));
朋友们都给点建议哈哈。。。 |