我想发送数据到TCP 105电路。如何解决CRC(循环冗余校验)计算?
以下十六进制命令行发送数据123:
7F30001103 313233 45D4
这里,313233是123十六进制表示和45D4是CRC值。
我在计算CRC后得到这个45D4的问题。在网上搜索了很长时间之后,我得到了不同标准中的其他CRC值。但是这些CRC值不被我的LED显示电路所接受。
请帮我了解如何从7F30001103313233获得45D4。
在此先感谢。
我想发送数据到TCP 105电路。如何解决CRC(循环冗余校验)计算?
以下十六进制命令行发送数据123:
7F30001103 313233 45D4
这里,313233是123十六进制表示和45D4是CRC值。
我在计算CRC后得到这个45D4的问题。在网上搜索了很长时间之后,我得到了不同标准中的其他CRC值。但是这些CRC值不被我的LED显示电路所接受。
请帮我了解如何从7F30001103313233获得45D4。
在此先感谢。
该命令匹配称为CRC-16/CMS的算法。
$ reveng -w 16 -s 7f30001103313233d445
width=16 poly=0x8005 init=0xffff refin=false refout=false xorout=0x0000 ch
eck=0xaee7 name="CRC-16/CMS"
这是可能正确的算法,因为你只给一个码字(因为我假设CRC已经字节交换。)
要生成的代码计算这个CRC,例如参见Mark Adler的crcany工具。
感谢这么好的回复Regregex。我希望这会起作用,我会尝试。 –
我用8字节的方法得到'0x9A8F'。你应该计算8字节的CRC还是只有一个subsdet?即使使用相同的算法,CRC依赖于您正在使用的多项式。 CRC逆转,这是一个棘手的! –
我已经用0x9A8F测试过,但没有成功。可能是它的CRC-16。 CRC逆转将是D445而不是45D4。 –