Показать сообщение отдельно
Старый 29.10.2003, 03:52     # 2
rg_software
Newbie
 
Регистрация: 14.10.2003
Сообщения: 25

rg_software Путь к славе только начался
Вообще размер файла всегда кратен 8 битам, поэтому при сжатии лучше всего где-нибудь в заголовке прописать точное количество "значимых" битов в последнем байте файла.

// считать бит из файла infile
BYTE GetBit()
{
static BYTE This;
static int count = 8;
BYTE bit;

if(count == 8)
{
This = fgetc(infile);
count = 0;
}

bit = (This>>count) & 1;
count++;

return bit;
}

// записать бит в файл outfile
void PutBit(BYTE bit)
{
static BYTE This;
static int count = 0;

This |= bit<<count;
count++;

if(count == 8)
{
fputc(This, outfile);
count = 0;
This = 0;
}
}
rg_software вне форума