Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Serge Kanilo                         2:5020/400     16 Jan 2002  20:27:37
 To : Avernin Edward
 Subject : Re: Упаковка данных(принцип записи в файл)
 -------------------------------------------------------------------------------- 
 
 "Avernin Edward" <edward@atnet.ru> wrote in message
 news:a23f0r$2qi1$1@Sonix.atnet.ru...
 
 > Видимо я не совсем правильно задал вопрос. Вот например у меня есть 2
 
 Точно.
 
 > функции которые решают мою проблему.
 > Объясните как они работают.
 
 А что тут объяснять? Функции по-видимому для записи 12 или 10 битных
 (по крайней мере не более 24 бит) значений в файл с использованием
 getc/putc,
 input_bit_buffer/output_bit_buffer четырехбайтные буфера ввода/вывода
 input_bit_count/output_bit_count - счетчики невв/выведенных битов
 
 При записи число обрезается до нужного числа битов и дописывается
 справа к остатку в буфере, вывод осуществляется с левого бита и число
 сдвигается влево на 8 бит. Hевыведенный остаток храниться в буфере
 до следующего вывода (по видимрму в конце следует записать несколько
 фиктивных нулей для завершения). Ввод - обратный процесс.
 
 Функции написаны не лучшим образом: могут использоваться
 одновременно только с одним файлом, или требуется подсчет
 числа вызовов; используют 32 вместо sizeof(long), возможно,
 все можно было бы сделать прозрачнее и более гибко,
 введя более длинный буфер (хотя бы 2 long) и вынеся настройки
 в отдельную структуру и дописав функции открытия/закрытия
 и т.д. (хотя это уже дело вкуса)
 
 Cheers,
 Serge
 
 PS: Возможно, их могут использовать в обучении азам С,
 если это так, то я сделал ошибку :(
 
 > output_code(FILE *output,unsigned int code)
 > {
 > static int output_bit_count=0;
 > static unsigned long output_bit_buffer=0L;
 >     output_bit_buffer |= (unsigned long) code <<
 
 (32-BITS-output_bit_count);
 
 >     output_bit_count += BITS;
 >     while (output_bit_count >= 8)
 >     {
 >         putc(output_bit_buffer >> 24,output);
 >         output_bit_buffer <<= 8;
 >         output_bit_count -= 8;
 >     }
 >  }
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Упаковка данных(принцип записи в файл)   Serge Kanilo   16 Jan 2002 20:27:37 
Архивное /ru.algorithms/44215f7757ea.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional