⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemtool.cpp

📁 MDF监控源码2
💻 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 + -