目录
前言:
有些字符串直接打印出来是乱码,显示不出来。于是要转为十六进制的字符,再打印出来。
1、用CString的方式:
#include <CString >
void char2HexString(const char* pszData, unsigned int nSize)
{
CString strLog;
for (int nIndex = 0; nIndex < nSize; nIndex++)
{
CString str;
str.Format(_T("%02X"), pszData[nIndex] & 0xFF);
strLog += str;
}
// 输出 strLog
}
2、用 string 方式
std::string format(const char* pFmt, ...)
{
if (NULL == pFmt)
return "";
#define FORMAT_MSG_BUFFER_SIZE (90000)
char szBuffer[FORMAT_MSG_BUFFER_SIZE + 1] = { 0 };
va_list args;
va_start(args, pFmt);
vsnprintf(szBuffer, FORMAT_MSG_BUFFER_SIZE, pFmt, args);
va_end(args);
std::string strRet = szBuffer;
return strRet;
}
void char2HexString(const char* pszData, unsigned int nSize)
{
string strResult;
for (int nIndex = 0; nIndex < nSize; nIndex++)
{
string strTemp = format("%02X ", pszData[nIndex]);
strResult += strTemp;
}
// 输出 strResult
}