为了方便地在16进制字符串和字节数组之间进行转换,今天询问了同事,他给了我下面这几个函数
// ASCII码转为该码十六进制字符
// 输入参数: pDataIn: 需要转换的数据// iLenIn: 需要转换数据的长度// 输出参数: pDataOut: 转换后的数据 void HexCharToAscii(const UCHAR *pDataIn, int iLenIn, CString &pDataOut){ CString strTemp(_T(""));for (int i = 0; i < iLenIn; i++)
{ strTemp.Format(_T("%02X"), pDataIn[i]); pDataOut += strTemp; }} // 十六进制字符转为该码ASCII码// 输入参数: str: 需要转换的数据 // 输出参数: cHex: 转换后的数据 int AsciiToHex(CString str,UCHAR *cHex){ str.Trim(' '); CString strTemp(_T("")); DWORD dwNewSize = 0; for(int i = 0, j = 0; i < str.GetLength(); i +=2, j++) { strTemp = str.Mid(i, 2); cHex[j] = (UCHAR)_tcstoul(strTemp, NULL, 16); dwNewSize++; } return dwNewSize;//返回数组中的长度}
// 十六进制字符转为该码ASCII码
// 输入参数: str: 需要转换的数据 // 输出参数: cHex: 转换后的数据 int AsciiToHex1(UCHAR* str,int inlen,UCHAR *cHex){ TCHAR strTemp[2]; DWORD dwNewSize = 0; for(int i = 0, j = 0; i < inlen; i +=2, j++) { strTemp[0] = str[i]; i++; strTemp[1] =str[i]; cHex[j] = (UCHAR)_tcstoul(strTemp, NULL, 16); dwNewSize++; } return 0;}