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;
}