Прочитано Endianness, в котором говорится, как байты расположены в слове (или двойном/квадратном слове и т. Д.) В компьютерной системе.
Я предполагаю, что вы закодировали и скомпилировали этот пример в системе X86, которая является little-endian, поэтому наименее значимые бит COME FIRST. Противоположность этому расположению называется big-endian.
Теперь, очевидно, что ваша цель в этом упражнении является маршалом (или рассолом, в зависимости от того, как предпочитает свой жаргон) несколько байт, которые затем будут извлечены, возможно, другой программой.
Если вы разрабатываете программу, которая использует Fread() и и считывает данные таким же образом (с использованием SizeOf (длинная), так что вы не читаете слишком много данных) и в машине с такими же порядком байтами, он будет волшебным образом работать, и число, которое вы ожидаете, вернется. Но, если вы компилируете и запускаете инструмент «читать» на машине с противоположным контентом, считывая один и тот же файл ввода, ваш номер будет искажен.
Если ваша цель состоит в том, чтобы данные Маршаллом, вы должны быть лучше с инструментом, чтобы помочь вам Маршалловых свои байты в пути, который порядок байт-агностик, то есть библиотека, которая позволяет получить данные в правильный заказ. Там есть библиотеки, которые позаботятся об этом для вас.
Поиск «сортировки»/«сериализации». Об этом достаточно, чтобы найти здесь и всю остальную часть Интернета. Используйте shifts/masking для сериализации данных, а не только для записи области памяти. – Olaf
[endianness] (https://en.wikipedia.org/wiki/Endianness) ... темная магия – LPs
Вероятно, это больше связано с тем, как шестнадцатеричные дампы отображаются на экране тем, что вы используете для их отображения. –