<span style="font-size:24px;">
//length hex的长度 asc大小是hex的两倍
//入参hex, 出参 asc,length
short hex_asc(unsigned char *hex, unsigned char *asc, long length)
{
UCHAR hLowbit,hHighbit;
long i;
for(i=0;i<length*2;i=i+2)
{
hLowbit=hex[i/2]&0x0f;
hHighbit=hex[i/2]/16;
if(hHighbit>=10)
asc[i]=hHighbit+'7';
else
asc[i]=hHighbit+'0';
if(hLowbit>=10)
asc[i+1]=hLowbit+'7';
else
asc[i+1]=hLowbit+'0';
}
asc[length*2]='\0';
return 0;
}</span>
short asc_hex(unsigned char *asc, unsigned char *hex, long pair_len)
{
char src1,src2,factor1,factor2;
long len;
factor1 = '7';
factor2 = '7';
_strupr( (char *)asc );
for (len=0; len < pair_len; len++)
{
src1 = *(asc+len*2);
src2 = *(asc+len*2+1);
if ((src1>='0') && (src1<='9'))
factor1 = '0';
else if ((src1>='A') && (src1<='F'))
factor1 = '7';
else
return 1;
if ((src2>='0') && (src2<='9'))
factor2 = '0';
else if ((src2>='A') && (src2<='F'))
factor2 = '7';
else
return 1;
src1 = src1 - factor1;
src2 = src2 - factor2;
*hex++ = (src1 << 4) | src2;
}
return 0;
}</span>