私はいくつかのシステムとインターフェースしようとしていますが、その仕様では、シリアル通信用に CRC 16 を計算する必要があります。これはドキュメントからの抜粋です
「標準多項式 X16 +X12 +X5 +1 を利用したメッセージの 16 ビット CCITT CRC。シード値は常に 0 (ゼロ)」
まず第一に、それを行う方法の C# コードのサンプルが 2 ~ 3 つしか見つかりませんでしたが、どれも正しい値を提供していないようです。これを試しましたhttp://www.sanity-free.com/133/crc_16_ccitt_in_csharp.htmlを試しましたが、初期値に何を設定すればよいかわかりません。ゼロを試しましたが、まだ機能しません。
私がテストしているデータは次のとおりです。
0x00 0x09 0x10 0x01 0x01 0x7C 0xF4 0xB8 0x00,
私が得るCRC値は
0xF2 0x24,
ただし、彼らのシステムはそうあるべきだと言っています
0xC0 0x2F
私の理解では、多項式 x16 + x12 + x5 + 1 = 0x11021 ですが、コードでこれを使用しても、間違った答えが得られます。私は何を間違っていますか?