embox
46 строк · 805.0 Байт
1/**
2* @file pretty_print.c
3* @brief
4* @author Denis Deryugin <deryugin.denis@gmail.com>
5* @version
6* @date 28.10.2019
7*/
8
9#include <stdint.h>10#include <stdio.h>11#include <string.h>12
13#define STR_BYTES 1614
15size_t pretty_print_row_len(void) {16return STR_BYTES;17}
18
19/* Print up to STR_BYTES to buffer */
20int pretty_print_row(void *buf, size_t len, char *dest) {21size_t offt = 0;22if (len > STR_BYTES) {23len = STR_BYTES;24}25
26for (int i = 0; i < len; i++) {27sprintf(dest, " %02hhX", *((uint8_t *) buf + offt));28offt++;29dest += 3; /* One space + two hex symbols */30}31
32sprintf(dest, " ");33dest += 4; /* Four spaces */34
35for (int i = 0; i < len; i++) {36char c = (char) *((uint8_t *) buf + i);37if (c < 33 || c > 126) {38c = '.';39}40
41sprintf(dest, "%c", c);42dest++;43}44
45return 0;46}
47