Что касается механизма чтения данных из входного файла и записи данных в выходной файл, нет никаких препятствий для применения алгоритма кодирования Хаффмана к двоичному файлу.Кто-то просто читает байты, оперирует ими и записывает байты.
Что касается того, уменьшит ли алгоритм кодирования Хаффмана двоичный файл, возникают проблемы с содержанием информации и распределением вероятностей.Любая схема сжатия пытается уменьшить объем используемых данных, используя преимущества шаблонов в данных.Например, когда есть повторяющиеся последовательности байтов, они могут быть заменены более короткими кодами, которые их представляют.
Текстовые файлы обычно очень сжимаемы, потому что естественный человеческий язык не является произвольными данными, а использует ограниченный набор символов,имеет много шаблонов в персонажах и имеет много повторяющихся частей.«Двоичные файлы» могут быть чем угодно.Большая часть данных, которые мы храним в двоичных файлах, имеет шаблоны и в некоторой степени сжимаема, но некоторые данные могут быть очень плотными по содержанию информации и не иметь шаблонов, используемых алгоритмом сжатия.
Это невозможнодля любого алгоритма сжатия без потерь, чтобы сжать каждый файл.Если алгоритм сжатия всегда создавал файл меньшего размера, мы могли бы запустить его снова для меньшего файла, чтобы получить файл еще меньшего размера, и повторив это, в конечном итоге уменьшил бы размер файла до нуля.
Таким образом, любой алгоритм сжатия должен дать сбойсделать некоторые файлы короче.На самом деле, поскольку существует фиксированное количество файлов заданной длины и меньше, если оно уменьшает размер каких-либо файлов, оно должно увеличивать размер некоторых файлов.