diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-10-28 11:47:06 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-11-26 18:56:25 +0100 |
commit | e262c978f4cb8b448087102b68bbdcc731a090a0 (patch) | |
tree | 4031c1a0a5eb367eca08d8d0753ea287dea019d0 | |
parent | 9772055e79da77c6ec9ea6992cc77891efc1265a (diff) | |
download | libnitrokey-e262c978f4cb8b448087102b68bbdcc731a090a0.tar.gz libnitrokey-e262c978f4cb8b448087102b68bbdcc731a090a0.tar.bz2 |
Print ascii representation of dump in hexdump
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
-rw-r--r-- | misc.cc | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -34,6 +34,7 @@ std::vector<uint8_t> hex_string_to_byte(const char* hexString){ return data; }; +#include <cctype> 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; } |