Пишу LZW / кодировщик / декодер Хаффмана.LZW-кодер отправляет количество битов в соответствии со своей таблицей: если он содержит менее 2 ^ n элементов, он отправляет n битов.Кодер Хаффмана получает эти биты побайтно и кодирует их в определенное количество битов в соответствии со своим деревом.
Таким образом, проблема в том, что последний байт может содержать менее 8 бит.Если я использую EOF для определения конца ввода при декодировании, я могу внезапно получить значение EOF до фактического конца ввода.И если я отправляю / получаю 4 байта, учитывая, что первый предназначен для знака, я теряю 1 бит каждые 4 байта.
Должен ли я потерять эти первые биты или есть другое лучшее решение, которое я не знаю?