📄 systemtool.cpp
字号:
#include "stdafx.h"
#include "System.h"
// 字节数据转换为可打印字符串
// 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"
// 输入: pSrc - 源数据指针
// nSrcLength - 源数据长度
// 输出: pDst - 目标字符串指针
// 返回: 目标字符串长度
int BytesToString(const UCHAR* pSrc, char* pDst, int nSrcLength)
{
const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表
CString strError ;
try
{
for (int i = 0; i < nSrcLength; i++)
{
*pDst++ = tab[*pSrc >> 4]; // 输出高4位
*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位
pSrc++;
}
// 输出字符串加个结束符
*pDst = '\0';
}
catch(_com_error e)
{
strError = "异常:将为十六进制转换字符时内存溢出" ;
TRACE0(strError) ;
return -1 ;
}
// 返回目标字符串长度
return (nSrcLength * 2);
}
// 可打印字符串转换为字节数据
// 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}
// 输入: pSrc - 源字符串指针
// nSrcLength - 源字符串长度
// 输出: pDst - 目标数据指针
// 返回: 目标数据长度
int StringToBytes(const char* pSrc, UCHAR* pDst, int nSrcLength)
{
CString strError ;
//pDst = new UCHAR[nSrcLength/2];
memset(pDst,0,nSrcLength/2);
try
{
int nChange = 0 ;
for (int i = 0; i < nSrcLength; i += 2)
{
// 输出高4位
if ((*pSrc >= '0') && (*pSrc <= '9'))
*pDst = (*pSrc - '0') << 4;
else if((*pSrc >= 'A') && (*pSrc <= 'F'))
*pDst = (*pSrc - 'A' + 10) << 4;
else if((*pSrc >= 'a') && (*pSrc <= 'f'))
*pDst = (*pSrc - 'a' + 10) << 4;
else
*pDst = 0x00 << 4 ;
pSrc++;
// 输出低4位
if ((*pSrc>='0') && (*pSrc<='9'))
*pDst |= *pSrc - '0';
else if((*pSrc >= 'A') && (*pSrc <= 'F'))
*pDst |= *pSrc - 'A' + 10 ;
else if((*pSrc >= 'a') && (*pSrc <= 'z'))
*pDst |= *pSrc - 'a' + 10 ;
else
*pDst &= 0xF0 ;
pSrc++;
if( i < nSrcLength - 2 )
{
pDst++;
}
}
}
catch(_com_error e)
{
strError = "异常:将字符转换为十六进制时内存溢出" ;
TRACE0(strError);
return -1 ;
}
//返回目标数据长度
return (nSrcLength / 2);
}
//短信息拷贝GB码与ASCII混编
int MsgCopy(const char* pSrc, char* pDst,int nSrcLength)
{
int nResult = 0 ;
while( nResult < nSrcLength )
{
if( *pSrc < 0 )
{
*pDst++ = *pSrc++ ;
nResult++ ;
}
*pDst++ = *pSrc++ ;
nResult++ ;
}
return nResult ;
}
//转为16进制字符串
int String2Hex(CString& str, BYTE *senddata,int iLen)
{
CString sChar,sResult,strTemp;
//strTemp.Format("%s",senddata);
sChar.Empty();
sResult.Empty();
for(int i=0;i< iLen;i++)
{
sChar.Format("%.2X",*senddata++);
sResult += sChar;
}
str = sResult;
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -