Запись бит в бинарный файл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

подскажите как можно реализовать побитовую запись в бинарный файл. например имеется строка 0101010001011111010100101010101011001101, она занимает 40 бит или 5 байт, как я не пытался записать объем выходного файла 40 байт а мне надо чтобы было 5 байт, это нужно для сжатия данных

Решение задачи: «Запись бит в бинарный файл»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
char* GetBits(unsigned char byte, char bits[])
{
   size_t i;
   for (i = 0; i < 8; ++i)
   {
      bits[7 - i] = (byte & 1) ? '1' : '0';
      byte >>= 1;
   }
 
   return bits;
}
 
int main()
{
   FILE* f = fopen("file.bin", "rb");
 
   if (f == NULL)
   {
      perror("file.bin");
      return EXIT_FAILURE;
   }
 
   char bits[9] = { 0 };
   unsigned char byte;
   while (fread(&byte, 1, 1, f) == 1)
   {
      printf("%s", GetBits(byte, bits));
   }
 
   fclose(f);
 
   return EXIT_SUCCESS;
}

Объяснение кода листинга программы

  1. Программа начинается с подключения необходимых библиотек (stdio.h и stdlib.h).
  2. В функции GetBits происходит получение битов из байта и запись их в строку bits.
  3. В функции main происходит открытие файла file.bin для чтения.
  4. Если файл не может быть открыт, то выводится сообщение об ошибке и программа завершается.
  5. Создается массив bits размером 9 символов со значением 0.
  6. В цикле while происходит чтение байта из файла и вызов функции GetBits для получения битов.
  7. Результат выводится на экран.
  8. Файл закрывается.
  9. Программа завершается с успехом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы