Как считать два байта числа? Здравствуйте!
Объясните, пожалуйста, как реализовать данное считывание (в СИ):
имеется бинарный файл со следующим содержимым:
00 01 00 00 00 01
Первые два байта - целое число, не превышающее 2000, а дальше идут целые 32 битные числа (все big-endian).
Не могу понять как правильно считать эти числа, пытаюсь сделать через fread, но он выводит левые цифры.
Заранее спасибо!

21 Авг 2019 в 06:22
250 +1
0
Ответы
1

Привет! Для считывания двух байтов как целого числа в СИ можно воспользоваться следующим кодом:

#include <stdio.h>
int main() {
FILE *file = fopen("file.bin", "rb");
if (file == NULL) {
printf("Ошибка открытия файла\n");
return 1;
}
unsigned char buf[2];
fread(buf, sizeof(unsigned char), 2, file);
unsigned short num = (buf[1] << 8) | buf[0];
printf("Первые два байта числа: %u\n", num);
// Считываем оставшиеся 4 байта как целое число
unsigned int num2;
fread(&num2, sizeof(unsigned int), 1, file);
printf("Следующие четыре байта числа: %u\n", num2);
fclose(file);
return 0;
}

В данном примере мы сначала считываем первые два байта как массив байтов buf, затем преобразуем эти два байта в целое число num. Далее считываем оставшиеся 4 байта как целое число num2.

Надеюсь, это поможет! Если у вас еще возникнут вопросы, не стесняйтесь спрашивать.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир