fread прочитайте символы по порядку и расположите их в том же порядке в месте назначения, поэтому для одного и того же файла результат не будет одинаковым для младшего и старшего порядкового номера, когда вы будете считать результат обратнокак int
это точно так же, как если бы вы сделали
char * p = (char *) &number;
p[0] = fgetc(file);
p[1] = fgetc(file);
...
p[sizeof(int) - 1] = fgetc(file);
(предположим, что в файле достаточно символов)
Получается, что прочитанное число равно 4. Разве биты 0000 0100 0000 0000 == 1024?
зависят от того, является ли вы младшим или старшим порядковым номером, это 1024 или 64
Обновление после редактирования вопроса
Мой двоичный файл содержит
0400 0000 0000 0000 0400 0000 0000 00000000 0000
в то время, как вы, кажется, даете значенияв гекса (не в базе 2, как ранее), то есть вы имеете в виду, что ваш файл содержит
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
символ находится на 8 битах, а не на 16
, если в 32-разрядном младшем порядкеs, который дает 4 + (0 << 8) + (0 << 16) + (0 << 24) = 4 </p>
, если старший байтовый код на 32 бита, который дает (4 <<24) + (0 << 16) + (0 << 8) + 0 = 16384 </p>