ascii 与 bcd 码的互换
reer 2009-02-15 01:31:27 void bcd2ascii(const unsigned char *bcd, unsigned char *asc, int len)
{
unsigned char c;
int i=0;
for(i=0; i<len; i++)
{
c=*(bcd+i);
//printf("c=%c\n", c);
if( (c>>4) < 9 )
*(asc+2*i) = (c>>4) + '0';
else
*(asc+2*i) = (c>>4) + '0' + 7;
if( (c&0xF) < 9 )
*(asc+2*i+1) = (c&0xF) + '0';
else
*(asc+2*i+1) = (c&0xF) + '0' + 7;
}
}
void ascii2bcd(const unsigned char *asc, unsigned char *bcd, int len)
{
int i;
unsigned char c1, c2;
for(i=0; i<len; i+=2)
{
c1 = asc[i]-'0';
if( c1 > 9 )
c1=c1-7;
c2 = asc[i+1]-'0';
if( c2 > 9 )
c2=c2-7;
bcd[i/2] = ( c1<<4 ) | ( c2&0xF );
}
}