問題タブ [crc16]
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.
crc - 複数の小さな CRC チェックか、1 つの大きな CRC チェックか?
余分な 16 ビットを使用して CRC チェックで保護する L = 1024 ビットがあるとします。16 CRC-1 (シングル パリティ チェック) または 1 つの CRC-16 チェックのいずれかを選択できます。エラー検出機能の点でどちらのオプションが優れていますか?
16 CRC-1 の場合、いずれかの CRC-1 が失敗するとエラーが宣言されます。別の言い方をすれば、CRC チェックに合格するには、すべての CRC-1 チェックに合格する必要があります。そうしないと、エラーが宣言されます。
複数の CRC-1 システムは次のように実装されます。1024 ビットは、それぞれ 64 ビットの 16 グループに分割され、各 16 ビット グループには 1 つのパリティ ビットが追加されます。
java - Java16ビットCRCパケット検証
デバイスからGPRSを介して受信しているAvlパケットがあります。
プロトコルマニュアルによると、パケットの最後の4バイトには16ビットのCRCがあり、CRC計算のソースコードは次のとおりです。
パケットが送信するCRC番号を取得し、パケットを保存したByte配列に対してgetCrc16を呼び出して、2つの番号を比較します。
プログラム内で使用するコードは次のとおりです。
toBinaryString()は、バイトをからのバイナリに変換し、文字列に入れます!
そこで、マニュアルから提供されたgetCrc16()を使用してCRCを計算します。次に、パケットの終わりの4バイト前にインデックスを取得して、最後の4バイトを読み取り、パケットとともに送信されるCRCを取得できるようにします。
forループは最後の各バイトを受け取り、toBinaryString()を使用して、それらすべてをバイナリ形式で文字列に結合します!したがって、0000000000000000101011011101001のようなものが得られます(マニュアルには、最初の2バイトは16ビットCRCであるため、常にゼロであると記載されています)
したがって、バイナリ文字列を符号付き整数に解析し、2つのCRCを比較します...!
それでも私は次のような結果を得る:
計算されたCRC=21395-----受信されたCRC=30416
また
計算されたCRC=56084-----受信されたCRC=10504
私は多くのパケットでテストしましたが、すべてのパケットでデータが失われることはありません。また、データも解析しているので、取得したデータが正しいことがわかります。
私はこれすべてに何が欠けていますか?
python - PythonでCRC16を16進シリーズから変換する方法
私は16進バイトのシリーズを持っています:
これのCRC16を計算する必要があります。オンライン電卓は私に与えます:
私は次のようにcrcmodpythonモジュールを使用します:
この16進セリエをASCII文字列(関数が必要とする)としてどのように表すことができますか?
ありがとうございました!
python - このPythonでのCRC16の計算に違いがあるのはなぜですか?
このコードは同じ出力を 3 回提供すると思いますが、そうではありません。
説明してください!
java - unsigned int を使用せずに CRC16 関数を C から Java に変換する際の問題
ファームウェアの更新のために CRC16 チェックサムを作成する必要があります。このデータを送信すると (16 進文字列からバイト [] に変換されます)
020000810000120000000002F001128100000C9462050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C94941050C
コントローラーから次のCRC16を取得します
-17514
Javaでこれを確認しようとしましたが、同じ値を取得できません。
これは、C の元の関数です。
これはJavaで変換された関数です:
...しかし、うまくいきません。どうしたの?
security - 20 バイトのデータで CRC16 衝突が発生する可能性は?
構造体のハッシュを格納する必要があるシステムを開発していますが、長さはおそらく 20 バイト未満です。ただし、一連のハッシュでハッシュを検索するプロセスを最適化するために、ハッシュのサイズをできるだけ小さくしたいと考えています。
私の質問はこれです。crc16 ハッシュに入力するデータの量と、同じ長さの別のエントリとの衝突の確率との間に関係はありますか? もしそうなら、これに最適な長さはどれですか?
18 バイトが ASCII テーブル (az、0 ~ 9) 内にあり、残りの範囲は 0 ~ 10 です。
php - PHPでcrc16を計算する方法
OjectiveCで記述されたCRCコードをPHPに変換するのに助けが必要です。以下はObjectiveCコードです
以下は私がこれまでにphpで書いたコードです
$ strMessageにパックされた値が含まれているが、正しい結果が得られない場合。
どんな助けでも大歓迎です。
checksum - このCRC16チェックサム機能について説明する
255バイトのデータに対するCRC16チェックサムの機能があります。
チェックサムは、最初のバイトから最後から3番目のバイトまで計算されます。これらのコード、特に「ekmCheckCrc」関数で何が起こっているのか教えていただけますか?以下は私が得た関数です。
java - Ajax / JSON データ転送が壊れ、Unicode データが変更され、CRC 計算が壊れる
受注サイトの開発者です。Tomcat/Java
バックエンドがありJavaScript
、ブラウザーで広く使用されています。私のプログラムは、注文を正常に行うために内部システムが必要とする大量のデータ セットに関するユーザーとの会話を管理します。私たちの会話はすべてHTTPS
プロトコルを使用しています。
少し前までは、フォーム データ (Struts
アプリケーション) を受け取り、それを処理して、再びフォームとして返していました。いくつかのデータ損失エラーに気付きました。の拡張子を使用すると、特定のユーザーがフォーム データを欠落HttpServletRequestWrapper
していることがわかりました。あちこちにラインアイテムがあり、かなり悲惨です。私たちのデータは単一でなければなりません。
そのため、最近のリビジョンでは、フォームはJSON
. フォーム データを文字列に変換し、そこから CRC サムを作成し、これらの両方をキャリアJSON
オブジェクトにラップします。反対側は、フォーム データ文字列を抽出し、同じCRC
変換を適用してから、2 つの値を比較します。すべて順調ですが...
私のCRC
世代は、データ文字列に「ハイビット」文字が含まれているかどうかに依存することがわかりました。これはMicrosoft Word
、文、外国語の母音などを囲む派手な二重引用符など、 のようなプログラムからデフォルトで取得されるものです。根底にあるトランスポートメカニズムが物事を壊しているようです。
例として、書式設定済みの HTML を返すと、次のようなスラッシュが返されます。
インプロセスで変換される
チェックサムが同じではありません。余分なバックスラッシュをチェックすることはできますが、トランスポート メカニズムによるテキストの任意の再フォーマットに不満を感じています。
別の例としてJSON
、サーバーに次のようなデータがあります。
(単語の「i」の派手なバージョンに注意してください。)
レスポンス( )に直接書き込まれHttpServletResponse.getWriter().write(JSON output string)
ます。次に見ることができるのは
そして「何か」には次のものがあります:
どこ "?" は、黒いひし形で表示される文字の 1 つです。内部的には複数文字の Unicode です。
CRC
私が両端で使用しているのは主に( AnDan CRC software
CRC-16 実装だと思います) です。古いダウンロード ページがいくつかあるだけで、適切なリンクを取得できません :-( .
処理を通じて Unicode と高ビット文字を処理できるようにするスイッチまたは構成があるかどうか疑問に思っていますCRC
。何か案は?