2009-06-15 36 views
4

ユーザーがエラーを検出するだけでなく修正することを可能にするCRCライブラリがありますか?私はC/C++またはJavaライブラリ、理想的にはオープンソースを探しています。CRCエラー修正ライブラリ?

+0

はちょうどチェックしますが、CRCは、ここで難しいの要件である、またはそれは誤り訂正/検出のための、より一般的な要件ですか? – skaffman

+0

低レベルの通信プロトコルに適している限り、エラー訂正/検出の一般的な要件。最後に私はみんながCRC32を使っていることを確認しました。 – Gili

+0

作業しているデータに関する詳細を指定する必要があります。データをストリーミングしたり、保存したりしていますか?トランスミッションはどのくらい騒々しいですか? – heyitsme

答えて

6

私はCRCsがエラーを検出し、修正することはできないと信じています。これは、最も一般的な実装に当てはまります。あなたはerror correctionのテクニックを必要としますが、CRCは必要ありません。私はこれを行うためのライブラリを認識していませんが、あなたが探しているものが分かれば、簡単に見つけることができます。

+2

これは正しいとは言えません。 http://www.cs.nmsu.edu/~pfeiffer/classes/573/notes/ecc.htmlによれば、「常に2ビットエラーを検出できるエラーチェックコードは、常に1ビットエラーを修正できます」 。そして、http://www.dsprelated.com/showmessage/107079/1.php: "単一エラー訂正を行うには、ECC ビットのワードサイズが2 ** N以下でなければなりません。ここで、NはECCビットの番号 – Gili

+3

これは一般的なレベルで当てはまりますが、CRCアルゴリズムは修正を行いません。 – skaffman

+2

CRCを使ってエラー訂正を行うことができます。 CRC(A XOR B)= CRC(A)XOR CRC(B)... Bをエラー、Aを送信、A XOR Bを受信メッセージとする。次に、CRC(B)= CRC(A XOR B)XOR CRC(A)。 ハミング距離証明は、すべてのエラーチェックコード(特に、大した努力なしには予約できない安全なハッシュコード)にはあてはまりませんが、CRCにはこのような問題はありません。 次に、CRC(B)からB(1つのエラー訂正の場合、ルックアップテーブルには単一エラービットのインデックスが含まれます)に戻るルックアップテーブルが必要です。 –

0

CRCは誤り訂正のために頻繁に使用されるとは思われませんが、ファイルのセットをチェックして修復したい場合は、常にus2で使用されるpar2を試すことができます。例えば、win32 libraryのように、インターネット上で多くの文書や実装を見つけることができます。

6

CRCは必要ありませんが、FEC(前方誤り訂正)は必要ありません。オープンソースの実装はlibfecにあります。

3

エラー訂正に関する最善の技術的解決策はターボコードと呼ばれます。 詳細については、http://en.wikipedia.org/wiki/Turbo_codeを参照してください。

しかし、私は多くの無料の実装を見つけることはないと思います。

あなたは本当に自由なものをしたい場合は、以下を参照してhttp://rscode.sourceforge.net/

+0

ターボ符号は、高い符号化効率を達成するためにかなり複雑である。 –

1

で試してみてください:私はCRCが唯一のそれらを修正、エラーを検出しないことができると信じています。

作者が誤っています。 CRCは、シングルビットエラーを訂正するために使用できます。 C/C++ユーザージャーナル - 2003年6月 - 6ページ

http://www.drdobbs.com/an-algorithm-for-error-correcting-cyclic/184401662?queryText=Bill%2BMcDaniel

+2

オンラインソースへのリンクがあるといいですか? – Gili

関連する問題