問題タブ [parity]
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.
python - パリティを使用してオフセットを制御し、文字列内の各文字を別の文字と XOR する逆暗号化アルゴリズム
調査中のチャレンジ バイナリから次のアルゴリズムを逆にしました。
基本的に、各文字を文字列内の別の文字と XOR でオフセットしa
ます。文字の値が偶数または奇数の場合、関数は文字列内の文字を反復処理するため、a
初期値はです。10
a +=1
a -= 1
この暗号を逆にしてプレーンテキストを取得する方法を頭の中で考えました。元の文字列で偶数/奇数の文字オフセットを見つけるには、再帰関数を使用する必要があります。IE: XOR % 2 のプロパティを考えると、ifcipher[0]
が奇数の場合はどちらか一方plain[0]
がplain[10]
奇数であり、両方が奇数ではないことがわかります。同様に、cipher[0]
が偶数の場合、plain[0]
とplain[10]
の両方が偶数、または両方が奇数です。そこから、再帰アルゴリズムが残りを機能させることができるはずです。
平文のどの文字が偶数/奇数かがわかれば、残りを逆にするのは簡単です。私はこれを解決するのに数時間を費やしましたが、今はそれを実装するのに迷っています。
私は過去に基本的な再帰アルゴリズムを使用しましたが、このような問題を解決するために「分岐」するものはありませんでした。
cipher
この関数の結果の文字列が与えられた場合、再帰アルゴリズムを使用して、元のプレーン文字列の各文字のパリティを決定するにはどうすればよいでしょうか?
編集:明確にするために申し訳ありませんが、コメントに応じて、これについて数時間頭を悩ませた後、上記で概説した再帰戦略がこれを解決する唯一の方法だと思いました。そうでない場合は、タイトルの質問を解決するためのヒント/支援を受け入れます。
c++ - XOR を使用して比較できるように、整数をバイナリで表すにはどうすればよいですか?
バイナリの 1 ~ 6 ビットを取り、文字列がまだ 6 でない場合は最上位ビットに 0 を詰め込み、XOR 演算を使用して 3 ビットの 2 つのパケットを比較するコードを作成する必要があります。XOR を実行しているときに 2 進数の 0 ではなく、整数の 0 を比較しているため、出力がおかしいと思います。
stm32 - STM32F427 の USART1 は、8 番目のデータ ビットをパリティ ビットであるかのように設定することがあります。
次のクラスを介してSTM32F427
UASRT1 を使用しています。
問題は、時々 USART が実際の 8 番目のデータ ビットを無視し始め、それをパリティ ビット (具体的には奇数パリティ) として設定し始めることです。最も奇妙なのは、事前の再プログラミングなどを行わなくても、長い電源オフの後でも時々発生することです。たとえば、昨日の夜はすべて問題ありませんでしたが、翌朝、仕事に来てデバイスの電源を入れると、説明されている方法で動作し始めます. ただし、これに限定されず、次の再起動後にランダムに表示される場合があります。
その効果は、オシロスコープや、さまざまなプログラムで使用されるさまざまな UART-USB コンバーターではっきりと確認できます。この効果が現れると、テスト データ セットを送信するようにマイクロコントローラを再プログラムすることさえ可能です。たとえば、エンドレス サイクルで 0x00 から 0xFF まで。問題には影響しません。速度の変更 (9600 bps まで)、ワードあたりのビット数、パリティ制御は役に立ちません - 再プログラミング後も効果はそのまま残ります (たとえば、1 バイトあたり 2 パリティ ビットという異常な値が発生します)。または、少なくとも、UASRT が初期化され、プログラムのワークフローに従って通常の順序で使用されている間。
これを修正する唯一の方法は、main() 関数を次のようにすることです。
これにより、再プログラミングと再起動の後、最初の数バイト (最大 5) が不正に送信されますが、その後はすべてがうまく機能し、さらに再起動と再プログラムを繰り返しても引き続きうまく機能します。
STM32F427
この影響は、同じレイアウトの 2 つの物理的に異なるボード上の2 つの異なる で観察されます。外観に規則性は見られません。信号の極性とレベルは USART 要件に準拠しており、調査中にノイズや接触不良は検出されません。私のプログラムで使用されている他のコード (私のプログラムまたはライブラリーのいずれか) の方向から UASRT1 への愛情がないように思われるか、深く埋もれています。CMSIS-OS
は、プロジェクトで RTOS として使用されKeil
uVision 5.0.5
ますRTX OS
。
助けが必要。
algorithm - 一般的なハミング アルゴリズムを使用したパリティ ビット チェック
ロジック回路では、ロジックを開発することになっているECC ICに供給される8ビットのデータベクトルがあり、5つのパリティビットのベクトルが含まれています。ロジックを開発するための最初のステップ (ロジック ゲート、XOR を使用) は、どのパリティ ビットがどのデータ ビットをチェックするかを把握することです (インターレースされているため)。私は偶数パリティを使用しており、一般的なハミング コード ルール (2^n ごとにパリティ ビット) に従っていると、次の一連の出力が得られます。
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 P5
一般的なハミング アルゴリズムに従います。
各パリティ ビット、位置 1、2、4、8、16 など (2 の累乗) について、最初の位置 n (n-1) をスキップし、1 ビットをチェックしてから、別のビットをスキップします。 、別のチェックなど... 他のビットについても同じプロセスを繰り返しますが、今回は 2^n ごとにチェック/スキップします。ここで、n は出力配列内でビットが占める位置です ( P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 P5
)
その規則に従って、次のようになります。
P1 Checks data bits -> XOR(3 5 7 9 10 12)
P2 Checks data bits -> XOR(3 6 7 10 11)
P3 Checks data bits -> XOR(5 6 10 11 12)
P4 Checks data bits -> XOR(9 10 11)
私は正しいですか?私を混乱させるのは、パリティビットをチェックすることになっている2 ^ nビットの1つ、またはその特定のパリティビットの1ビット後としてチェックを開始する必要があることです。それが包括的であるかどうかにかなり要約されます。
事前に助けてくれてありがとう!
乾杯!
c++ - 2 次元パリティ ビット c++ を使用した TCP クライアント/サーバー
私はあなたがうまくいけば私を助けることができる問題を抱えています。asio http://think-async.com/とストリームベースの入力出力を使用して、TCP クライアントとサーバーをプログラムする必要があります。ただし、2 次元のパリティ ビット (DATA、ACK、NAK) を使用したエラー チェックも必要ですが、これを行う方法が 1 つもわかりません。
うまくいけば、あなたは私を助けることができます.
c++ - エラーC++の非ブーストasioチェック
tcp を使用して非ブースト asio プログラムでエラーをチェックする方法はありますか? 接続にランダムにエラーを追加する方法はありますか? C++ で単純な Echo Server を作成しましたが、ランダム エラーを生成する必要がありますが、問題は、その方法がわからないことです。
または、それがさらに役立つ場合は、2 次元パリティ (DATA、ACK、NAK) をチェックする必要があります。
あなたが私を助けてくれることを願っています。
クライアント:
サーバ:
parity - パリティチェックは実際にどのくらいの頻度で必要ですか? (そのようなエラーはどのくらいの頻度で発生しますか?)
破損したデータを復元したり、少なくとも特定したりできるように、エラー チェックを実行するためにさまざまなシステムが導入されていることは知っていますが、そのような破損はどのくらいの頻度で発生しますか? パリティチェックが必要になるのは一般的ですか、それとも単なる予防措置ですか?