libcw/cwUtility.cpp

38 lines
798 B
C++
Raw Normal View History

#include "cwCommon.h"
#include "cwLog.h"
#include "cwCommonImpl.h"
#include "cwUtility.h"
void cw::printHex( const void* buf, unsigned bufByteN, bool asciiFl )
{
const unsigned char* data = static_cast<const unsigned char*>(buf);
const unsigned colN = 8;
unsigned ci = 0;
for(unsigned i=0; i<bufByteN; ++i)
{
printf("%02x ", data[i] );
++ci;
if( ci == colN || i+1 == bufByteN )
{
unsigned n = ci==colN ? colN-1 : ci-1;
for(unsigned j=0; j<(colN-n)*3; ++j)
printf(" ");
if( asciiFl )
{
for(unsigned j=i-n; j<=i; ++j)
if( 32<= data[j] && data[j] < 127 )
printf("%c",data[j]);
else
printf(".");
}
printf("\n");
ci = 0;
}
}
}