必ずしもテキストではない大きなファイルやその他のファイルの場合、それらを圧縮するにはどうすればよいですか?また、データの破損をチェックするための最も効率的な方法は何ですか?これらの種類のアルゴリズムに関するチュートリアルをいただければ幸いです。
3 に答える
圧縮には、LZOが役立ちます。使いやすく、ライブラリも簡単に利用できます。データ破損チェックについては、CRC ca http://cppgm.blogspot.in/2008/10/calculation-of-crc.html
一般的な圧縮には、ハフマン符号化をお勧めします。習得は非常に簡単です。フル機能の(2パス)コーダー/デコーダーは、理解していれば4時間以内に作成できます。これは、.zip形式の一部であるDEFLATEの一部です。それができたら、LZ77を学び、それらを組み合わせて、独自のDEFLATE実装を作成します。
または、誰もがzipファイルに使用するライブラリであるzlibを使用します。
大きなファイルの場合、誰もが言っているようにCRC32はお勧めしません。大きなファイルは、誕生日の破損に非常に簡単に悩まされます。つまり、ファイルが大きくなると、32ビットのチェックサムで検出できるエラーの数はますます制限されます。ハッシュの高速実装(たとえば、MD5)はうまくいくでしょう。はい、MD5は暗号的に壊れていますが、あなたの質問を考慮して、セキュリティを意識した問題に取り組んでいないと思います。
ハミングコードの可能性があります。アイデアは、データの各Nビットにいくつかの合計ビットを挿入し、データの一部のビットと合計ビットの合計が常に1になるように、それぞれを0または1で初期化することです。合計が1でない場合、これらの合計ビットの値を見ると、失われたデータのビットを確認できます。
前の投稿が言っているように、他にもたくさんの可能性があります。