字符串转16进制。
bool STR2HEX( const char* psrc, int srclen, char* pdst, int dstlen )
{
if( dstlen < srclen / 2 )
return false;
for( int idx = 0; idx < srclen; idx += 2 )
{
sscanf( psrc + idx, "%2hhx", pdst + idx / 2 ); //%2hhx,hhx只匹配2个字符
}
return true;
}
16进制转字符串,默认不加空格。
bool HEX2STR( char* psrc, int srclen, char* pdst, int dstlen, bool bspace = false )
{
int bytesize = 2 + ( int )bspace;
if( dstlen < srclen * bytesize )
return false;
for( int i = 0; i < srclen; i++ )
sprintf( pdst + i * bytesize, "%02X", ( BYTE )psrc[i] );
if( bspace )
{
for( int i = 0; i < srclen - 1; i++ )
pdst[i * bytesize + 2] = 0x20 ;
}
return true;
}