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

📄 hex.cpp

📁 字符串
💻 CPP
字号:
#include <cassert>
#include <algorithm>
#include <sstream>
#include "hex.hpp"

namespace hex
{
	inline c_uchar HexToChar( c_uchar c )
	{
		assert( c < 0x10 );
		return ( ( c > 9 )? ( 0x37 + c ) : ( 0x30 + c ) );
	};

	inline c_uchar CharToHex( c_uchar c )
	{
		assert( c <= _T( 'F' ) || c <= _T( 'f' ) );
		TCHAR ct = c;
		ct = _totupper( ct );
		return ( ( ct >=  _T( 'A' ) )? ( ct - _T( 'A' ) + 10 ) : ( ct - _T( '0' ) ) ) ;
	}

	void
	HexToString
	( 
	c_uchar* pBuffer,
	size_t ulLength,
	_string& sHexSting,
	int bUpCase /* = 1  */
	)
	{
		size_t i = 0;
		_string s;
		for ( ; i < ulLength; ++i )
		{
			s += HexToChar( HIHEX( pBuffer[ i ] ) );
			s += HexToChar( LOHEX( pBuffer[ i ] ) );
		}
		if ( 0 == bUpCase )
		{
			std::transform( s.begin(), s.end(), s.begin(), _totlower );
		}
		sHexSting = s;
	}

	void
	StringToHex
	(
	c_string& sHex,
	uchar* pBuffer,
	size_t length,
	int bUpCase /* = 1 */
	)
	{
		_string s = sHex;
		_string::const_iterator itr;
		size_t i;
		std::transform( s.begin(), s.end(), s.begin(), _totupper );
		itr = s.begin();
		
		for ( i = 0; ( i < length ) && ( s.end() != itr ); ++i )
		{
			uchar c;
			c = CharToHex( static_cast< uchar >( *itr ) );
			assert( itr != s.end() );
			c <<= 4;
			++itr;
			c |= CharToHex( static_cast< uchar >( *itr ) );
			pBuffer[ i ] = c;
			++itr;
		}
	}
}

⌨️ 快捷键说明

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