Я пытаюсь читать в растровом изображении, начиная с его заголовка, но fread пропускает символы для меня.Чтение пропущенных символов в объекте
Я использую этот ЬурейеЕ в моем заголовке:
#include <windows.h> // Used for other
#include <cstdio>
typedef struct tagBITMAPHEADER{
WORD wFileType;
DWORD dwFileSize;
WORD dwReserved;
WORD dwReserved2;
DWORD dwBmpDataOffset;
DWORD dwBmpHeaderSize;
DWORD dwWidth;
DWORD dwHeight;
WORD wPlanes;
WORD wBitsPerPixel;
DWORD dwCompression;
DWORD dwBitmapDataSz;
DWORD dwHRes;
DWORD dwVRes;
DWORD dwColors;
DWORD dwImpColors;
} BITMAPHEADER, *PBITMAPHEADER;
И в моем коде, я просто использовать простой Еореп и Fread с двоичным.
#include "ImageLoader.h"
BITMAPHEADER pbhFileInfo;
FILE *fBitmap = fopen(FileName,"rb"); //Open file in read/binary
if (fBitmap) //File is now open
{ fread(&pbhFileInfo,sizeof(BITMAPFILEHEADER),1,fBitmap);
fclose(fBitmap);
}
Хотя мой растровый начинается с '424DF25A0D' (HEX), первые две переменные читать, кажется, чтобы пропустить 'F25A'
wFileType = 0x4d42 dwFileSize = 0x0000000d
Любая идея может быть?
Заранее спасибо.
Итак, вы наткнулись на прокладку структуры. Вы также должны прочитать о предисловии. Если вы действительно хотите, чтобы ваш код не зависел от размеров данных, отладки структуры и работы со всеми типами endianness, вы должны вручную декодировать информацию и поместить ее в свою структуру заголовка. Это, очевидно, больше работы, но и более надежной. –