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

📄 asciistrandhexstrtransform.cpp

📁 ASCII串和16进制串相互转换的c++类,本人原创
💻 CPP
字号:
/******************************************************************
文件名: ASCIIStrAndHexStrTransForm.cpp
创建人: 刘毕贵
日  期: 2009.05.06
描  述: CASCIIStrAndHexStrTransForm类实现文件
版  本: 1.0
******************************************************************/

#include "ASCIIStrAndHexStrTransForm.h"

using std::string;



/*******************************************************************
函数名:  ASCIIToHexChar
作者:    刘毕贵  
日期:    2009-05-06 
功能:    根据整数获取对应的16进制字符    
输入参数:
		  p_nASCII 整数[0,16)

返回值:  与p_nASCII对应的16进制字符,如果p_nASCII不在[0,16)区间,返回'\0'
说明  :  无
修改记录:无
*******************************************************************/
char CASCIIStrAndHexStrTransForm::ASCIIToHexChar(int p_nASCII) const
{
	switch(p_nASCII)
	{
	case 0:
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
	case 6:
	case 7:
	case 8:
	case 9:
		p_nASCII += '0';
		break;
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
	case 15:
		p_nASCII = 'A' + (p_nASCII - 10);
		break;
	default:
		return '\0';
	}
	return p_nASCII;
}


/*******************************************************************
函数名:  HexCharToASCII
作者:    刘毕贵  
日期:    2009-05-06 
功能:    根据16进制字符获取对应的整数    
输入参数:
		  p_chHex 16进制字符[0-9,A-F]

返回值:  与p_chHex 16进制字符对应的10进制数,如果p_chHex不在[0-9,A-F]间,返回'17'
说明  :  无
修改记录:无
*******************************************************************/
int CASCIIStrAndHexStrTransForm::HexCharToASCII(char p_chHex) const
{
	switch(p_chHex)
	{
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		p_chHex -= '0';
		break;
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
		p_chHex = p_chHex - 'A' + 10;
		break;
	default:
		return 17;
	}
	
	return p_chHex;
}


/*******************************************************************
函数名:  GetHexStr
作者:    刘毕贵  
日期:    2009-05-06 
功能:    ASCII串转换为16进制字符串    
输入参数:
		  p_strASCII -- ASCII串

返回值:  与p_strASCII -- ASCII串对应的16进制字符串
说明  :  无
修改记录:无
*******************************************************************/
const string CASCIIStrAndHexStrTransForm::GetHexStr(const string &p_strASCII) const
{
	char ch;
	string strRet;

	for(string::const_iterator cit = p_strASCII.begin(); cit != p_strASCII.end(); ++cit)
	{
		ch = ((*cit) & 0xF0) >> 4;	

		strRet += ASCIIToHexChar(ch);

		ch = (*cit) & 0x0F;
		
		strRet += ASCIIToHexChar(ch);
	}

	return strRet;
}



/*******************************************************************
函数名:  GetASCIIStr
作者:    刘毕贵  
日期:    2009-05-06 
功能:    16进制字符串转换为ASCII串    
输入参数:
		  p_strHex -- 16进制字符串

返回值:  与p_strHex -- 16进制字符串对应的ASCII字符串
说明  :  无
修改记录:无
*******************************************************************/
const string CASCIIStrAndHexStrTransForm::GetASCIIStr(const string &p_strHex) const
{
	char ch;
	string strRet;

	for(size_t idx = 0; idx < p_strHex.size(); idx = idx + 2)
	{
		ch = HexCharToASCII(p_strHex[idx]) << 4;

		if( idx + 1 < p_strHex.size())
		{
			ch = ch | HexCharToASCII(p_strHex[idx + 1]);
		}

		strRet += ch;
	}
	return strRet;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -