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