問題タブ [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.
java - Javaでchar配列とバイト配列から特定のバイトを抽出する
16 進値を含む char 配列があります。これには 6 バイトが含まれます。これらの 6 バイトの crc を計算すると、関数は int 値を返します。これがコードです。
私の質問は
intとして取得したcrcをバイトに変換するためにbytebufferを使用しました。ただし、計算された crc は 2 バイトではなく 4 バイトで格納されます。CRC 16 を計算しましたが、結果の crc は 32 ビットです。crcの計算で「int」を返してしまい、javaではintは32bitと書いてあるからだと思います。
では、バイト バッファ (crc_bytes) または計算された int crc (crcresult) から 2 バイトだけを抽出する方法を説明します。
「char buffer[]」のバイトと計算されたcrcの2バイトを1バイト配列に入れました。どうすれば追加できますか
1 バイト配列で。
上記のコードの出力は
最初の 6 バイトは char 配列から変換されたバイトで、最後の 4 バイトは crc です。
crc - CRC16 の効率的な実装
非常に特定のハードウェアでのみ実行されることがわかっているプログラムを入手したので、SSE4.2 命令セットによって提供される crc32 を使用し始めましたが、別の目的で crc16 が必要になりました。SSE の crc32 と同じパフォーマンスで crc16 を提供するようにハードウェアを調整する方法はありますか?
ありがとう
c++ - CCITT CRC 16 ビット開始値 0xffff
長さと一緒にパラメーターとして渡されたデータの CCITT 16 ビット チェックサム値を計算する必要があります。配列 TempStr にテスト データ "123456789" を入力し、null 終端文字を除いた長さの多項式 0x8408 を使用すると、結果文字列 6E90(Hex) が得られます。ヌル終了文字とともに、907A を取得します。多項式を 0x1201 に交換すると、29E2(16 進数) と EFE8(16 進数) という結果が得られます。終端文字はありますが、なしです。
私の質問は次のとおりです。正しい値を取得するには、NULL 終端文字の有無にかかわらず CRC を計算する必要がありますか? アルゴリズムで多項式 0x1201 または逆多項式 0x8408 を使用する必要がありますか? 与えられたデータ 0x29B1 の正しい CRC は? 関数が正しく機能しているかどうかを判断するには、正しい値が必要です。この特定の CRC タイプを計算するアルゴリズムは正しいですか? wData=(unsigned int)0xff & *pData++?? 誰かが私に何が間違っているのか、私の問題を解決する方法を説明できれば、とても感謝しています. ありがとうございました
これは、calculate_CRC16 関数を使用して表示するコードです。
これは calculate_CRC16 関数です。
c - チェックサムを計算するCRC 16プログラム
現在、CRC 16 多項式を使用して文字の CRC を計算する CRC16 プログラムを作成していX^16 + X^15 + X^2 + 1
ます。プログラムは標準入力からデータを読み取り、16 ビットの CRC を 16 進数で出力する必要があります。それにもかかわらず、プログラムを実行すると、出力に間違った値が表示されます。
これが私のコードです:
出力:
(txtファイルで123456789を読んでいます)
あるはずBB3D
ですが、私は得て7bda
います。誰かが私が間違っていることを理解するのを手伝ってくれますか?
c# - プログラムに 2 つの CRC16 バイトを含める ...?
ロボット モーターを制御する DSPIC33F に RS232 経由でいくつかのバイトを送信したいのですが、DSPIC は、最後の 2 バイトが CRC16 用である 9 バイトを順番に受信する必要があります。
CRC16を計算するプログラム、インターネットで見つけました:
excel - ボイスピックコード
私はExcelでのVBAコーディングに比較的慣れていません。PTI に準拠したラベリングのバックアップ システムを開発しようとしています。Excelファイル内に音声ピックコードを設定したいと考えています。
VPC Calculator が無料でダウンロードできることは理解していますが、Excel ファイルで GTIN、LOT、または Date 情報が変更されたときに VPC が自動的に更新されるようにしようとしています。私は多くの研究を行っており、JAVA に適用される式を理解しています。しかし、それをExcel用のVBA形式に実装する方法がわかりません。人々が以前に CRC-16 ハッシュ計算を作成できたことは理解していますが、PTI 音声選択計算機と一致する場所で機能させることができません。
私の目標は、2 つの関数を作成することです。=VPCS(GTIN,LOT,DATE) and =VPCL(GTIN,LOT,DATE)
. GTIN、ロット、および日付の情報は、それぞれのセルから引き出されます。次に、「VPCS」は最初の 2 つの小さな数字を収集し、VPCL は同じ情報の 2 つの大きな数字を収集します。これが可能かどうかはわかりませんが、もし可能であれば、この種のソフトウェアを扱う他の多くの人々の助けになるでしょう。
これができると思う人はいますか?また、補足ですが、VBA の学習に適したサイトをご存知の方がいらっしゃいましたら、リンクを投稿していただけませんか? 私はそれについてできるだけ多くを学ぼうとしています。
lookup - ルックアップ テーブル付き CRC 16-CCITT
だから私がCRCについて知っていて、Javaの実装もしたのはこれです:
たとえば、初期メッセージを 16 ビット多項式として持つ
これは別の 16 ビットの 0 を取得します
次に、除数を持って、
最初のメッセージの各 "1" の先頭に配置し、最初のメッセージに 1 がなくなるまで、ビット間で XOR を実行します。この例では、合計で 6 つの XOR があります。
CRC は、メッセージの最後の 16 ビット、または除算の残りになります。この場合、101011110110000
.
私の質問は、ルックアップ テーブルを使用してこれをどのように実装できますか? 誰かが私の多項式の計算方法に関する数値例を教えてもらえますか?