Eclipse中单片机编程uint64用法

功能:数据已存入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

 

注:以上代码不是从源码中复制而来,直接复制编译可能会存在错误,建议理解后根据自己代码修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值