16进制字符串和字节数组的转换

为了方便地在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;
}

 

 

 

原文地址:https://www.cnblogs.com/huhu0013/p/2953864.html