任何帧的相同 16 位 CRC X-25

Same 16-bit CRC X-25 for any frame

我很好奇我在开发应用程序期间所做的观察。 长话短说,我正在制作从智能电表读取数据的应用程序。他们有这样的请求框架:

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

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

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

calc CRC again

如果你给数据追加一个CRC,再计算一次,结果是一个常数值。如果 CRC 不是 post 补码 (xorout = 0),结果为零,但在这种情况下它是 post 补码 (xorout = 0xffff),所以结果是 non-zero 常量,在本例中为 0x0f47(假设没有发生错误)。