📄 hex.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 + -