Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Функция выводит 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");
- }
- }
Add Comment
Please, Sign In to add comment