問題タブ [error-detection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
checksum - CRC スキームとして優れているのはどれですか?
120 ビット長のメッセージをエラー チェックする必要があるとします。チェックサム スキームには 2 つの代替手段があります。
メッセージを 5 つの 24 ビット文字列に分割し、それぞれに CRC8 フィールドを追加します
メッセージ全体に CRC32 フィールドを追加する
エラー検出確率が高いスキームはどれですか?またその理由は? エラー パターンの分布に関する事前知識がないと仮定しましょう。
アップデート:
システムに、セットされたビットの代わりに受信されたクリアされたビット (つまり、「1」は送信され、「0」は受信された) である自然な障害モードがあり、その反対が起こらない場合はどうなりますか?
この場合、有効なデータが「0」と「1」の均一な分布を持っていると仮定すると、エラー ビットの長いバーストの確率ははるかに小さくなり、したがって、最長のバーストは最長のストリング「1」によってバインドされます。 」がメッセージにあります。
python - 欠落しているモジュールを動的に検出する (Python)
大規模なプロジェクトに取り組んでいるときは、エラーの検出と処理に非常に熱心です。ユーザーがインストールしたかどうかに関係なく、いくつかのモジュールを使用しているため、この可能性を考慮する必要があります。
それらをインポートしようとしているときに、どのモジュールが欠落しているかを検出する方法を知りたいです。現在、ImportErrors を監視し、エラーを生成するモジュールの名前をリストに追加する一連の try/except ブロックがあります。
現在のコード:
この方法は問題なく機能しているように見えますが、全体的なスペースをあまり取らない方法が必要です。この複数試行/例外ブロック メソッドを使用する主な理由は、どのモジュールでインポートに問題があったかを検出する必要があるためです。
c - 非常に短いシリアル パケットのパケット フレーミング
組み込み機器向けのシンプルな固定長プロトコルを設計しました。各パケットはわずか 2 バイトです。
「crc ベースのフレーミング」を使用します。つまり、レシーバーは 2 バイトを収集し、CRC4 を計算し、それが一致する場合、フレームは有効と見なされます。ご覧のとおり、フレームの開始またはフレームの終了はありません。
問題があります。CRC4 の推奨メッセージ長は 11 ビットですが、ここでは 12 ビットで計算されています。私が理解している限り、これは CRC エラー検出特性が低下することを意味します (ただし、どの程度かはわかりません)。
(ちなみに、誰かが CRC4 (またはその他) のコードを必要とし、それを自分で書くのに十分なスキルを持っていないと感じている場合、boost には任意の crc を計算できる非常に優れた boost::crc 関数があります)
問題は、この crc ベースのフレーミングが機能せず、フレーミング エラーが発生することです。つまり、あるメッセージの 2 番目のバイトと次のメッセージの最初のバイトが正しいメッセージを形成することがあります。
私の質問は - バイトを追加せずにフレーミングを修正する方法はありますか? その 2 バイトにすべてを詰め込むのにかなりの時間を費やしますが、そのように捨てるのはちょっと悲しいことです。ただし、オペコード フィールドにはスペア ビットがあります。
- 無線チャネルは一度に複数のパケットを「吐き出す」ことを好むため、時間ベースのフレーミングはあまり信頼できません。
- CRC4 よりもうまく機能するエラー検出方法が他にあるのではないでしょうか?
さらにバイトを追加する必要がある場合、それを行う最善の方法は何でしょうか?
- フレーム開始バイトとバイトスタッフィング (COBS など) を使用できます (+2 バイトですが、破損したメッセージをどうするかはわかりません)。
- フレーム開始ニブルを使用して、CRC を CRC8 (+1 バイト) に拡張できます。
- 他の何か?
checksum - CRC 多項式の誤り検出能力のチェック
任意の CRC 多項式のエラー検出能力を計算する方法を見つけようとしました。
任意の多項式に適用できる (または適用できない) さまざまなエラー検出機能があることを知っています。
シングル ビット エラーの検出: CRC 幅 >= 1 のみが必要なため、すべての CRC がこれを実行できます。
バースト エラーの検出: すべての CRC は、その幅に等しいサイズまでバースト エラーを検出できます。
奇数のビット エラーの検出: 項の数が偶数の多項式 (完全な 2 進多項式で偶数の 1 ビットを意味する) を使用した CRC でこれを行うことができます。
ランダム ビット エラーの検出 (フレーム サイズに依存): 特定の HD と多項式の最大フレーム サイズを計算できる、すぐに使用できる C アルゴリズムがあります。私はそれを完全には理解していませんでしたが、うまくいきました。
16 ビット CRC 多項式 x¹⁶+x¹²+x⁵+1 = 0x11021 を仮定します。その多項式は次のことができます。
- すべてのシングル ビット エラーを検出します (データ サイズに依存しません)。
- 最大 16 ビット幅 (データ サイズに依存しない) までのすべてのバースト エラーを検出します。
- 奇数のビット エラーをすべて検出します (多項式の項が 4 つあるため、データ サイズに依存しません)。
- 最大 32571 ビット データ サイズの 3 ビット エラー (HD4) を検出します。
上記は正しいですか?
追加の CRC エラー検出機能はありますか? はいの場合、任意のCRC多項式がそれらをサポートしているかどうかを(深い数学の知識なしで)どのように確認できますか?
java - UPC コードのエラーを検出するにはどうすればよいですか?
UPC コードにはチェック ディジットがあり、このチェック ディジットを使用してコードが有効かどうかを確認する方法を知っています。
コードが有効でない場合、プログラムはエラーの場所を教えてくれる必要があります。できることはわかっていますが、どうすればよいでしょうか。単一置換エラー (例: 2 の代わりに 5 を入力) と転置エラー (例: 21 の代わりに 12 を入力) を検出する必要があります。
簡単なようですが、私はそれを理解することはできません。
visual-studio - Visual Studio でエラー出力を改善する方法
プロジェクトに取り組んでいて、次のエラーが発生しました
これではエラーの原因を突き止めることはほぼ不可能なので、gcc with でコンパイルしてみた-Wall
ところ、以下のような出力が得られました。
この出力ははるかに詳細であり、間違った場所&
(クラス メンバーは である必要があります) でVec left
あった原点をすばやく見つけるのに役立ちましたVec& left
。
Visual Studio を冗長にすることはできますか?
Visual Studio を に配置すると/Wall
、1800 を超える警告が表示されますが、ほとんどはプロジェクトとはまったく関係ありませんが、それでもこれら 2 つのエラーしか表示されません。