//----------------------------------------------------------------------
//16进制码转换ASCII码
//----------------------------------------------------------------------
int MN2_KNL_HexToAscii( P_U8 pAscTxt, P_U8 pHexTxt, int iHexTxtLen )
{
register P_U8 pAscStr;
register P_U8 pHexCur;
P_U8 pHexEnd;
SCI_ASSERT( pAscTxt );
SCI_ASSERT( pHexTxt );
SCI_ASSERT( !(iHexTxtLen & 1) );
pAscStr = pAscTxt;
pHexCur = pHexTxt;
pHexEnd = pHexCur + iHexTxtLen;
while(pHexCur < pHexEnd)
{
//填写ASCII码的高4位
if( ('0' <= *pHexCur) && ('9' >= *pHexCur) )
{
*pAscStr = (*pHexCur & 0x0F) << 4;
}
else if( ('A' <= *pHexCur) && ('F' >= *pHexCur) )
{
*pAscStr = (*pHexCur - 'A' + 10) << 4;
}
else if( ('a' <= *pHexCur) && ('f' >= *pHexCur) )
{
*pAscStr = (*pHexCur - 'a' + 10) << 4;
}
pHexCur++;
//填写ASCII码的低4位
if( ('0' <= *pHexCur) && ('9' >= *pHexCur) )
{
*pAscStr += (*pHexCur & 0x0F);
}
else if( ('A' <= *pHexCur) && ('F' >= *pHexCur) )
{
*pAscStr += (*pHexCur - 'A' + 10);
}
else if( ('a' <= *pHexCur) && ('f' >= *pHexCur) )
{
*pAscStr += (*pHexCur - 'a' + 10);
}
pHexCur++;
pAscStr++;
}
return (int)(iHexTxtLen / 2);
}