ASC 和BCD码相互转换的源码

BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

ASCII码是目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。

 

int iBcdToAsc(char *pcBCD,char *pcASC,int iLength){
 int i;
 for(i=0;i<iLength;i++){
  unsigned char ch;
  ch=(unsigned char)pcBCD[i];
  ch=ch>>4;
  if(ch>=10){
   pcASC[2*i]=ch-10+'A';
  }else{
   pcASC[2*i]=ch+'0';
  }
  ch=(unsigned char)pcBCD[i];
  ch=ch &0x0f;
  if(ch>=10){
   pcASC[2*i+1]=ch-10+'A';
  }else{
   pcASC[2*i+1]=ch+'0';
  }
 }
 return(0);
}

int iAscToBcd(char *pcASC,char *pcBCD,int iLength){
 int i;
 for(i=0;i<iLength/2;i++){
  unsigned char ch1,ch2;
  ch1=(unsigned char)pcASC[i*2];
  ch2=(unsigned char)pcASC[i*2+1];
  if(ch1>='a' && ch1<='f')
   ch1=ch1-'a'+0xa;
  else if(ch1>='A' && ch1<='F')
   ch1=ch1-'A'+0xa;
  else
   ch1=ch1-'0';
  if(ch2>='a' && ch2<='f')
   ch2=ch2-'a'+0xa;
  else if(ch2>='A' && ch2<='F')
   ch2=ch2-'A'+0xa;
  else
   ch2=ch2-'0';
  pcBCD[i]=(ch1<<4)|ch2;
 }
 return(0);
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值