//---------------------------------------------------------------------- //16 进制码转换ASCII码 //---------------------------------------------------------------------- int HexToAscii(unsigned char* pAscii, unsigned char* pHex, int nHexLen) { unsigned char* pAscStr = pAscii; unsigned char* pHexCur = pHex; unsigned char* pHexEnd = pHexCur + nHexLen; 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)(nHexLen / 2); }