Похоже, вам нужна хорошая реализация префиксного кода , который представляет каждый символ отдельно без учета контекста.
Существует множество кодов, каждый из которых имеет компромисс между пространством и временем, и каждый более подходит по сравнению с данным распределением вероятности символа.
Например, гамма-код дает хорошие коэффициенты сжатия для символов, монотонно распределенных, но это является дорогостоящим из-за явных сдвигов, необходимых для возврата чисел, тогда как кодировка байтовой переменной относительно дешево, но дает умеренные коэффициенты сжатия.
В общем, Хаффман - это метод, который дает вам оптимальный код (т. Е. Тот, который дает наилучшую степень сжатия), и существуют хорошо настроенные реализации из-за его важности (например, методы, основанные на каноническое представление очень быстрое), но оно требует распределения вероятностей ваших символов, поэтому оно зависит от контекста и, следовательно, требует большей осторожности для его реализации.
В двух словах: попробуйте и выберите тот, который лучше всего соответствует вашим потребностям.