Как распечатать содержимое файла в шестнадцатеричном формате с использованием GDB? - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь создать программу, которая изменяет размер изображения bmp на коэффициент f, но у меня возникают проблемы с определением, что происходит с программой.Я подумал об использовании gdb для проверки того, что читается из исходного изображения и записывается в новое изображение, но когда я пытаюсь распечатать содержимое окончательного изображения, оно кажется другим, чем я ожидал.

Итак, программа изначально читает с первого изображения через указатель файла с именем inptr.Первые 14 и 40 байтов из первого изображения сохраняются в переменной типа bitmapfileheader и bitmapinfoheader с именами bf и bi, которые составляют 14 и 40 байтов соответственно.Свойства этих структур изменяются с учетом изменения размера конечного изображения.Затем структуры записываются в новый файл с помощью указателя outptr

. После записи структур в новый файл я печатал содержимое bf (в gdb) с помощью команды

print bf

и распечатывает

{bfType = 19778, bfSize = 670, bfReserved1 = 0, bfReserved2 = 0, bfOffBits = 54}

Здесь та же информация при использовании команды p/x bf для ее форматирования в шестнадцатеричном формате

{bfType = 0x4d42, bfSize = 0x29e, bfReserved1 = 0x0, bfReserved2 = 0x0, bfOffBits = 0x36}

Проблема возникает, когда я пытаюсь распечататьсодержимое нового изображения.Я использовал эту команду для печати первых 14 байтов

`x /14xh outptr`

, которые печатают

0x603250:       0x2c84  0xfbad  0x0000  0x0000  0x4000  0xf7ff  0x7fff  0x0000
0x603260:       0x4000  0xf7ff  0x7fff  0x0000  0x4000  0xf7ff

Кажется, что все байты отличаются от того, что было сохранено в bf.Я надеялся использовать команду x в gdb для вывода чего-то похожего на то, что xxd делает в терминале, но я не уверен, почему содержимое outptr отличается от bf struct.

Здесьссылка на исходный код , а вот заголовочный файл bmp.h .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...