我定义了u8 buffer[6],现在要把buffer[5],buffer[4],buffer[3],buffer[2]这四个八位数据重新组合成一个32位数据,例如buff...

2019-08-14 03:38发布

我定义了u8 buffer[6],现在要把buffer[5],buffer[4],buffer[3],buffer[2]这四个八位数据重新组合成一个32位数据,例如buffer[5]=0xAA,buffer[5]=0xCD,buffer[5]=0xEF,buffer[5]=0x12,要得到0XAACDEF12,要怎么样写啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
DongInker
1楼-- · 2019-08-14 05:42
 精彩回答 2  元偷偷看……
ADS1993
2楼-- · 2019-08-14 08:08
buffer[5],buffer[4],buffer[3],buffer[2]这四个八位数据重新组合成一个32位数据

以上这句可以这样实现:
[mw_shl_code=c,true]void u8_to_u32(char *tamube_u8,int *tamube_u32,int number,int position)
     {
       int j = 0;
       for(int i=0;i<number;i++)
       {
         tamube_u32=((int)(tamube_u8[position+j+0]<<24)|(int)(tamube_u8[position+j+1]<<16)|(int)(tamube_u8[position+j+2]<<8)|(int)(tamube_u8[position+j+3]));
         j  =  j + 4;
       }
     }[/mw_shl_code]
xsx127
3楼-- · 2019-08-14 08:51
试试看这个,unsigned int * p = &buffer[2];看看是不是,不记得stm32是大端还是小端了
aiyeba
4楼-- · 2019-08-14 10:37
int temp;(4个字节)

temp=0xAA*(0xFFFFFF+1)+0xCD*(0xFFFF+1)+0xEF*(0xFF+1)+0x12;

好好思考一下吧    为什么会这样    你还可以拿10进制来看

temp=1234;

temp=1*1000+2*100+3*10+4;



一周热门 更多>