将ASC串转为BCD码

 //将ASC串转为BCD码
//NUMS==SOUR的ASC数
//例:if sour="9999",nums=4 then dest=0x99,0x99
int asc_to_bcd(unsigned char *sour,int nums,unsigned char *dest)
{
 int i,len;
 unsigned char result;
 unsigned char tmpbuf[10000];
 if(nums>9999)
  return 1;
 len=nums/2+nums%2;
 if(nums%2!=0)
 {
  tmpbuf[nums]=0x30;
  memcpy(tmpbuf,sour,nums);
 }
 else
  memcpy(tmpbuf,sour,nums);
 for(i=0;i<len;i++)
 {
  result=*(tmpbuf+2*i);
  
  if((result>=0x30) && (result<=0x39))
   *(dest+i)=(result-0x30)*0x10;
  else if((result>=0x41) && (result<=0x46))
   *(dest+i)=(result-55)*0x10;
  else if((result>=0x61) && (result<=0x66))
   *(dest+i)=(result-87)*0x10;
  else
   result=0x30;
  result=*(tmpbuf+2*i+1);
  if((result>=0x30) && (result<=0x39))
   *(dest+i)+=(result-0x30);
  else if((result>=0x41) && (result<=0x46))
   *(dest+i)+=(result-55);
  else if((result>=0x61) && (result<=0x66))
   *(dest+i)+=(result-87);
  else
   *(dest+i)+=0x30;
  
 }
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值