最近アルゴリズムに興味が沸いてきました
私が考えているテキストファイル圧縮ですが
まず元データバイナリを条件付きのビット反転などをして頻度に偏差を付けます。
(8bit解釈時に7が多くて9が少ないとかに)
んで頻度が多いデータを1xとか1xxとかの3bit以下に置換し
残りのデータの頻度に偏差が残っていれば
それも01xとか01xxとかなるべく短い値に置換。
残りのデータは少し長くなるのを我慢して
状況に応じて0xxxxや00xxxxや001xxxx等のかぶらない値に置換します。
ヘッダ部が大きくなりそうですが、いかがでしょうか?