У меня есть простой вопрос о том, как читать заголовочный файл растрового изображения.Especifying Шестнадцатеричные значения в массиве в C для растровых файлов
У меня есть растровый массив как это:
typedef unsigned char byte;
char bitmap[(188*180)+1024+54]; //The image size is 188*180 + the header file of 54 bytes+ the pallete table´s 1024 bytes
I'm с указанием значения в соответствии с заголовком BMP, но у меня есть вопрос, когда имеющие значение that's больше байт. Например, ширина моего изображения составляет 288, что составляет 0x120 в шестнадцатеричном формате. Однако я не могу просто сказать:
bitmap[19] = 0x120;
потому что это больше, чем один байт. В соответствии с тем, что я читаю, у меня есть двойное слово для хранения высоты моего изображения (это 4 байта), поэтому я могу использовать bitmap[20]
, bitmap[21]
и bitmap[22]
для хранения всего числа.
Как я должен делить число, чтобы получить то же значение, хранящееся в файле заголовка? Я не уверен, добавлены ли значения или читаются как один шестнадцатеричный номер при открытии файла bmp.
Найдите определение 'struct', которое описывает заголовок растрового изображения, и следите за контентом. Вы * можете * разбить число на свои байты, но конечность все равно будет проблемой. –
В стандартном байте C это то же самое, что и 'char', поэтому' typedef' в нем явно бесполезно и сбивает с толку в лучшем случае. Обратите внимание, что если вы имели 8-битный тип (например, октет), то байт не обязательно должен иметь 8 бит. Используйте типы 'stint.h' для фиксированной ширины (и конкретной кодировки). Также обратите внимание, что 'char' не имеет стандартной подписанности. – Olaf
Вам также потребуется исследовать «бит на пиксель» (ваш 8) и «шаг», потому что длина строки растрового изображения может быть больше ширины изображения. –