【问题标题】:Same 16-bit CRC X-25 for any frame任何帧都使用相同的 16 位 CRC X-25
【发布时间】:2019-06-20 19:41:08
【问题描述】:

我对自己在应用开发过程中的观察非常好奇。 长话短说,我正在制作从智能电表读取数据的应用程序。他们有这样的请求框架:

7E [hex-address] [crc1] [cmd] [crc2] 7E

CRC 的算法是 CRC-16/X-25,他们应该计算没有7e 的帧的整个左边部分,所以crc2 包括crc1。我注意到crc2 对于任何cmd 都是相同的,即使有不同的hex-address。 我已经使用crccalc 工具来确保。重现步骤:

  • 放置任意(甚至任意大小)十六进制数组
  • 计算 CRC-16/X-25
  • 交换 CRC 字节
  • 将此交换后的 CRC 放入数组末尾
  • 再次计算 CRC

对于任何字节数组,此 CRC 都是相同的。为什么这样?这种现象有什么名字吗?

【问题讨论】:

    标签: crc crc16


    【解决方案1】:

    再次计算 CRC

    如果您将 CRC 附加到数据并再次计算,则结果是一个常量值。如果 CRC 不是后补 (xorout = 0),则结果为零,但在这种情况下,它是后补 (xorout = 0xffff),因此结果是一个非零常数,在这种情况下为 0x0f47(假设没有发生错误)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2021-08-09
      相关资源
      最近更新 更多