embox

Форк
0
/
pretty_print.c 
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 16
14

15
size_t pretty_print_row_len(void) {
16
	return STR_BYTES;
17
}
18

19
/* Print up to STR_BYTES to buffer */
20
int pretty_print_row(void *buf, size_t len, char *dest) {
21
	size_t offt = 0;
22
	if (len > STR_BYTES) {
23
		len = STR_BYTES;
24
	}
25

26
	for (int i = 0; i < len; i++) {
27
		sprintf(dest, " %02hhX", *((uint8_t *) buf + offt));
28
		offt++;
29
		dest += 3; /* One space + two hex symbols */
30
	}
31

32
	sprintf(dest, "    ");
33
	dest += 4; /* Four spaces */
34

35
	for (int i = 0; i < len; i++) {
36
		char c = (char) *((uint8_t *) buf + i);
37
		if (c < 33 || c > 126) {
38
			c = '.';
39
		}
40

41
		sprintf(dest, "%c", c);
42
		dest++;
43
	}
44

45
	return 0;
46
}
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.