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

21 Авг 2019 в 06:22
217 +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 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир