Pourquoi fread mess avec mon ordre de byte?

Im essayant d'analyser un fichier bmp avec fread() et quand je commence à analyser, il inverse l'ordre de mes octets.

typedef struct{
    short magic_number;
    int file_size;
    short reserved_bytes[2];
    int data_offset;
}BMPHeader;
    ...
BMPHeader header;
    ...

Les données hex est 42 4D 36 00 03 00 00 00 00 00 36 00 00 00;
Je suis le chargement des données hex dans la structure par fread(&header,14,1,fileIn);

Mon problème est de savoir où le nombre magique doit être 0x424d //'BM' fread() retourne les octets à 0x4d42 //'MB'

Pourquoi ne fread() faire et comment puis-je le réparer;

EDIT: Si je n'étais pas assez précis, j'ai besoin de lire l'ensemble du bloc de données hexadécimales dans la struct pas seulement le nombre magique. J'ai seulement pris le nombre magique comme un exemple.

source d'informationauteur Chase Walden