0

宿題として、単純なランレングス エンコーディングの実装を利用する単純な圧縮/解凍プログラムを作成しました。プログラムが動作するようになりました。非常に多くの文字を含むテキスト ファイル (プログラム ソースなど) の圧縮と解凍は問題なく動作します。実験として、圧縮プログラム自体のバイナリを圧縮/解凍してみました。これにより、ファイルは元のバイナリよりもはるかに小さくなり、明らかに実行できなくなりました。このデータ損失の原因は何ですか?

私の推測では、それはバイナリ ファイルの表現方法に関連しているということでしたが、それ以上のことはわかりません。

4

2 に答える 2

1

プラットフォームが Linux の場合 (質問にタグが付けられているため)、バイナリ モードとテキスト モードの間に違いはありません。だから、そうであってはなりません。それでも、ファイルはバイナリとして開く必要があります。

あなたの問題は、プログラムが '\0' 文字を有効なデータとしてではなくターミネータ (または特別に) として扱うことだと思います。

于 2013-04-01T07:01:45.340 に答える