文字列の圧縮なら、使用文字のリスト化が比較的簡単だと思います。 使われている全ての文字をリスト化して連番を付けます。 そのリスト数によって、1文字を何ビットで送るかを決めます。 普通に送ると「16ビット*文字数」の総データが必要だったのが、 128種類以内だと、ヘッダ+7ビット*文字数 256種類以内だと、ヘッダ+8ビット*文字数 で送信できます。 復元は逆に、ヘッダのリストを展開して、本体データを指定ビットずつ分解してリストと照らし合わせ、文字に直していきます。 漢字辞書ファイルみたいに文字種類が多い場合は、かえってサイズが増えますけどね・・・