arseniivреализация не очень, сразу предупреждаю,
представьте, что на каком-то этапе у меня получилась обычная строчка с 1 и 0
(да, да "101010101010011", нулями в нужном количестве все дополнено)
в битовую я ее превращаю так:
Код:
void PackBitString(char *message, FILE *out)
{
int i, j;
char c;
for(i = 0; i < (int)strlen(message); i += 8)
{
for(c = 0, j = 0; j < 8; ++j)
{
c *= 2;
c += message[i + j] - '0';
}
fprintf(out, "%c", c);
}
}
Считать обратно в строчку пытаюсь так:
Код:
void HuffmanDecode(FILE *in, FILE *out)
{
int size = 8;
char c, *s = (char *)malloc(size);
while(!feof(in))
{
sPrintCharBits((char)fgetc(in), s);
size += 8;
s = (char *)realloc(s, size);
}
s = (char *)realloc(s, size + 1);
s[size] = 0;
printf("\nGet: %s\n", s);
}