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);
}
本文介绍了BCD码和ASCII码的基本概念及用途,并提供了两种编码之间转换的具体实现方法。BCD码常用于需要高精度计算的场景,如会计系统;而ASCII码则是最常用的字符集编码之一。

1711

被折叠的 条评论
为什么被折叠?



