16进制和ASCII码的转换

帮忙写个16进制和ASCII码相互转换的程序,函数声明如下
int HexToAscii(char *dest, const char *src, size_t length);
描述:该函数将16进制字符串转换成Ascii码字符串,dest为目标字符串,src为源字符串,length为需要转换的字符串的长度,返回值为转换成功后目标串的长度。
int AsciiToHex(char *dest, const char *src, size_t length);
描述:该函数将Ascii字符串转换成16进制字符串,dest为目标字符串,src为源字符串,length为需要转换的字符串的长度,返回值为转换成功后目标串的长度。

作者: dingxiaotao   发布时间: 2011-05-11

C/C++ code
void HexToAscii(char *t, const char *s, int l)
{
    int i;
    unsigned char c;

    if( t == NULL || s == NULL ) return;

    for( i = 0; i < l; i++ )
    {
        c = (s[i] >> 4) & 0x0F;
        t[2*i] = (c <= 0x9) ? c + 0x30 : c + 0x37;

        c = s[i] & 0x0F;
        t[2*i + 1] = (c <= 0x9) ? c + 0x30 : c + 0x37;
    }
    t[2*i] = 0;
}

作者: justkk   发布时间: 2011-05-11