/** * Функция выводит 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"); } }