2

x-modem プロトコルと 133 バイトのパケットを使用して、シリアルポートからファイルを読み込んでいます。その中で読んでます

      1 byte is SOH
      2 byte packet number
      3 byte nagative of packet number
next  128 bytes data
      2 bytes CRC sent from other side.

128 バイトのデータの CRC と、相手側から送信された 2 バイトの CRC を計算する必要があるため、1 バイトにし、計算した CRC と比較する必要があります。Javaでこれを行うにはどうすればよいですか?

4

3 に答える 3

5

Jacksumを使用してみてください。

于 2009-04-09T05:34:57.147 に答える
1

Sun JDK 1.6にはsun.misc.CRC16が含まれていますが、いくつかの異なる多項式が使用されているため、これが探しているCRC16ではない可能性があります。

于 2009-04-09T05:28:55.290 に答える
1

これは私の C コードで、Java に簡単に移植できます。好きな方法で自由に使用できます。word への参照は 16 ビットの符号なし値のためのものです。Java では代わりに char を使用できるはずです。

16 ビット CRC を使用してから時間が経ちすぎているため、シードに基づいたバリエーションがあるかどうかは覚えていません。X-Modem の C 実装でこのコードを使用したのは確かです。

ソースはtech.dolhub.comに掲載されています。

于 2009-04-09T05:56:22.853 に答える