1

ファイルのバイナリ データが破損していないことを確認するためのベスト プラクティスは何ですか?

いくつかの文字列 (長さ + 文字) といくつかの MAP (文字列よりもマップの最初のサイズ) があります。

また、データが破損すると、マップのサイズが非常に大きな値になる可能性があるため、無限ループに陥ります。

読み取り前/読み取り中にバイナリデータが破損していないことを確認する方法はありますか?

4

1 に答える 1

3

最も簡単な解決策は、ある種のハッシュ/チェックサムです。いくつかのオプションがあります:

  • 1/2 の補数加算
    • 長所: 実装は非常に簡単です。データ ブロック内のすべての 32 ビット DWORD を追加するだけです。
    • 短所: 不良データの検出はあまり得意ではありません。一部の一般的なビットスキューによって破損する可能性があります。
  • CRC32
    • 長所: 高速で、実装が比較的簡単で、ハッシュ出力サイズが小さい。
    • 短所: ハッシュ サイズが小さいということは、悪いデータを見逃す可能性が低いことを意味します。
  • MD5
    • 長所: ほとんどの意図と目的 (暗号ではない) に対して、衝突耐性があります。
    • 前の 2 つよりもはるかに遅く、より複雑です。ただし、ライブラリがあります。
  • パリティ ビット
    • 長所: エラーの検出修正に使用できます。
    • 短所: 適切に実装するのが難しい場合があり、データの全体的なサイズが大きくなります。

好きなのを選びな :)

于 2012-05-12T10:26:12.887 に答える