功能:数据已存入uint8 au8Data[MAX]中,其中1-16位为00158d0000a6b51f,实现将其保存到uint64变量destaddress中。
Eclipse下C语言源码为:
uint8 i=0;
uint64 au64data1,au64data2; //须定义为64位,否则取不到值
au64data1=0x0;
au64data2=0x0;
for(i=0;i<=8;i++)
{
if(au8Data[i]>='0' && au8Data[i]<='9')
au8Data[i]=au8Data[i]-0x30;
else if(au8Data[i]>='a' && au8Data[i]<='f')
au8Data[i]=au8Data[i]-0x57;
au64data1=((uint32) (au8Data[i]<<4*(8-i)) )|au64data1;
}
for(i=9;i<=16;i++)
{
if(au8Data[i]>='0' && au8Data[i]<='9')
au8Data[i]=au8Data[i]-0x30;
else if(au8Data[i]>='a' && au8Data[i]<='f')
au8Data[i]=au8Data[i]-0x57;
au64data2=((uint32) (au8Data[i]<<4*(16-i)) )|au64data2;
}
//vPrintf("au64data1 is %x\n",(uint32)au64data1);
//vPrintf("au64data2 is %x\n",(uint32)au64data2);
uint64 destaddress=0x0;
destaddress=au64data1<<32 | au64data2;
vPrintf("left part is %x\n",(uint32)(destaddress>>32));
vPrintf("right part is %x\n",(uint32)destaddress);
输出结果为:
left part is 0x00158d00
right part is 0x00a6b51f
注:以上代码不是从源码中复制而来,直接复制编译可能会存在错误,建议理解后根据自己代码修改。