From e262c978f4cb8b448087102b68bbdcc731a090a0 Mon Sep 17 00:00:00 2001 From: Szczepan Zalega Date: Fri, 28 Oct 2016 11:47:06 +0200 Subject: Print ascii representation of dump in hexdump Signed-off-by: Szczepan Zalega --- misc.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'misc.cc') diff --git a/misc.cc b/misc.cc index 9b339cd..c9d38cb 100644 --- a/misc.cc +++ b/misc.cc @@ -34,6 +34,7 @@ std::vector hex_string_to_byte(const char* hexString){ return data; }; +#include std::string hexdump(const char *p, size_t size, bool print_header) { std::stringstream out; char formatbuf[128]; @@ -45,9 +46,23 @@ std::string hexdump(const char *p, size_t size, bool print_header) { out << formatbuf; } - for (const char *le = p + 16; p < le && p < pend; p++) { - snprintf(formatbuf, 128, "%02x ", uint8_t(*p)); - out << formatbuf; + const char* pp = p; + for (const char *le = p + 16; p < le; p++) { + if (p < pend){ + snprintf(formatbuf, 128, "%02x ", uint8_t(*p)); + out << formatbuf; + } else { + out << "-- "; + } + + } + out << "\t"; + + for (const char *le = pp + 16; pp < le && pp < pend; pp++) { + if (std::isgraph(*pp)) + out << uint8_t(*pp); + else + out << '.'; } out << std::endl; } -- cgit v1.2.1