我正在使用 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,我必须将其设为单字节,并且必须与我计算的 crc 进行比较。我怎样才能在java中做到这一点?
尝试使用Jacksum。
Sun JDK 1.6 包含 sun.misc.CRC16,但这有可能不是您正在寻找的 CRC16,因为使用了几个不同的多项式。
这是我的 C 代码,将其移植到 Java 很简单 - 您可以以任何您喜欢的方式自由使用它。对 word 的引用是针对 16 位无符号值 - 您应该能够在 Java 中使用 char 来代替。
自从我使用 16 位 CRC 以来已经太久了,所以我不记得是否存在基于种子的变化。我很确定我早在 X-Modem 的 C 实现中就使用了这段代码。
来源发布在 tech.dolhub.com。