Я пытаюсь прочитать целое число из двоичного файла, но сталкиваюсь с этой проблемой, когда байты хранятся в обратном направлении, и поэтому после интерпретации (big-endian) он выдает неправильное число.
Вот первый 4 bytes
двоичного файла:
00000000 00000000 00000000 00100000
(целое число значения 32)
Вот мой код для чтения этих 4 байтов:
FILE *streamIn;
uint8_t boxSize[4];
...
streamIn = fopen("Videos/special.mp4", "rb");
size_t count = fread(boxSize, sizeof(uint8_t), 4, streamIn);
unsigned int size = *(int *)boxSize;
cout << "size : " << size << endl;
uint8_t a = boxSize[3];
std::bitset<8> x(a);
std::cout << "x : " << x << endl;
uint32_t b = size;
std::bitset<32> y(b);
std::cout << "y : " << y << endl;
Это вывод:
размер: 536870912
x : 00100000
y : 00100000000000000000000000000000
Почему байты хранятся в обратной переменной в переменной size ?
Кроме того, если я немного изменю код и переформатирую с интервалом в 4 байта, как показано ниже, я все равно получу точно такое же значение для размера :
streamIn = fopen("Videos/special.mp4", "rb");
size_t count = fread(boxSize, sizeof(uint32_t), 1, streamIn);
unsigned int size = *(int *)boxSize;
Пожалуйста, помогите мне понять, почему байты хранятся в обратном направлении в размере обоими способами.