/**
* Функция выводит hex представление буффера
* Например
* char buffer[] = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
* hexdump(buffer, 150)
*
* Вывод:
* 0: 4c 6f 72 65 6d 20 49 70 73 75 6d 20 69 73 20 73 [Lorem Ipsum is s]
* 10: 69 6d 70 6c 79 20 64 75 6d 6d 79 20 74 65 78 74 [imply dummy text]
* 20: 20 6f 66 20 74 68 65 20 70 72 69 6e 74 69 6e 67 [ of the printing]
* 30: 20 61 6e 64 20 74 79 70 65 73 65 74 74 69 6e 67 [ and typesetting]
* 40: 20 69 6e 64 75 73 74 72 79 2e [ industry. ]
*/
void hexdump(char* data, int size) {
for (int i = 0; i < size; i++) {
if (i % 16 == 0) {
if (i != 0) { // Вывод ASCII символов
printf(" [");
for (int j = -16; j < 0; j++) {
printf("%c", data[i + j] < ' ' ? '.' : data[i + j]);
}
printf("]\n");
}
printf("%4x: ", i); // Вывод смещения
}
if (i % 8 == 0 && i % 16 != 0) printf(" ");
printf("%02x ", data[i]);
}
if (size % 16 != 0) {
for (int i = size % 16; i < 16; i++) {
printf(" ");
}
printf(" [");
for (int j = 0; j < size % 16; j++) {
char symbol = data[(size - size % 16) + j];
if (symbol < ' ') symbol = '.';
printf("%c", symbol < ' ' : '.' : symbol);
}
for (int j = size % 16; j < 16; j++) printf(" ");
printf("]\n");
}
}
Comments
0 B
|👍
/👎