首页 > 解决方案 > 我无法从数据集中推导出 CRC16 算法

问题描述

关于 CRC16 计算的第 2.3 节:

https://www.mennegat.nl/media/shop_item/Mezzo_Doc_1.1.0.pdf

它试图解释如何计算校验和。我有一个计算的工作示例

d37ccb00526000000014000000

作为校验和:

0825

UDP数据包的整个有效载荷是

02d37ccb00526000000014000000082503

设备会响应,因为它是完全可接受的数据包。我似乎无法通过所有示例 crc 检查找到 0825 的 16 位匹配项。

我们使用以下 16 位 crc 检查,我认为它们中的任何一个都不会输出 0825 作为结果。

https://github.com/sigurn/crc16/blob/master/crc16.go#L26-L48

谢谢你的帮助!

标签: crccrc16

解决方案


看起来 CRC 是以小端格式存储的。以链接代码为基础,初始值 CRC = 0,代码生成 0x2508 的 CRC,存储为 0x08 0x25。

初始值可能导致 CRC = 0x0825 的可能性很小,但需要更多示例数据。


推荐阅读