|
Вообще размер файла всегда кратен 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;
}
}
|