}
// printing and converting functions
-
-void print_hex(const uint8_t * data, const size_t len)
-{
+void print_hex(const uint8_t * data, const size_t len) {
size_t i;
-
- for (i=0; i < len; i++)
+ for (i=0; i < len; ++i)
printf("%02x ", data[i]);
+ printf("\n");
+}
+void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
+
+ int rownum = 0;
+ printf("[%02d] | ", rownum);
+ for (int i = 0; i < len; ++i) {
+ printf("%02X ", data[i]);
+
+ // check if a line break is needed
+ if ( breaks > 0 && !((i+1) % breaks) && (i+1 < len) ) {
+ ++rownum;
+ printf("\n[%02d] | ", rownum);
+ }
+ }
printf("\n");
}
// loop through the out_index to make sure we don't go too far
for (size_t out_index=0; out_index < max_len-2; out_index++) {
// set character
- sprintf(tmp++, "%u", data[in_index]);
+ sprintf(tmp++, "%u", (unsigned int) data[in_index]);
// check if a line break is needed and we have room to print it in our array
if ( (breaks > 0) && !((in_index+1) % breaks) && (out_index+1 != max_len) ) {
// increment and print line break
char *sprint_hex_ascii(const uint8_t *data, const size_t len) {
static char buf[1024];
- memset(buf, 0x00, 1024);
char *tmp = buf;
- sprintf(tmp, "%s| %s", sprint_hex(data, len) , data);
+ memset(buf, 0x00, 1024);
+ size_t max_len = (len > 1010) ? 1010 : len;
+ sprintf(tmp, "%s| %s", sprint_hex(data, max_len) , data);
return buf;
}
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)