这个算法应该是CRC校验算法,具体实现流程如下:

  1. 建立一个CRC表,包含8位数的余数,共256个。

  2. 初始化CRC寄存器为0x00。

  3. 依次将输入数据的每一个字节与CRC寄存器进行异或运算,得到一个新的CRC值。

  4. 将新的CRC值作为下一轮运算的输入数据。

  5. 最后得到的CRC值即为校验结果。

验算过程:

输入数据为[0x46 0x00 0x00 0x00 0x94 0xF4 0x24 0x00 0x55]。

  1. 初始化CRC寄存器为0x00。

  2. 依次将输入数据的每一个字节与CRC寄存器进行异或运算。

第一个字节0x46与CRC寄存器异或得到0x46。

第二个字节0x00与CRC寄存器异或得到0x46。

第三个字节0x00与CRC寄存器异或得到0x46。

第四个字节0x00与CRC寄存器异或得到0x46。

第五个字节0x94与CRC寄存器异或得到0xD2。

第六个字节0xF4与CRC寄存器异或得到0x26。

第七个字节0x24与CRC寄存器异或得到0x0A。

第八个字节0x00与CRC寄存器异或得到0x0A。

  1. 最后得到的CRC值为0x0A,与输出结果[0x26]不符合。

输入数据为[0x46 0x00 0x00 0x00 0x94 0xF4 0x24 0x01 0x55]。

  1. 初始化CRC寄存器为0x00。

  2. 依次将输入数据的每一个字节与CRC寄存器进行异或运算。

第一个字节0x46与CRC寄存器异或得到0x46。

第二个字节0x00与CRC寄存器异或得到0x46。

第三个字节0x00与CRC寄存器异或得到0x46。

第四个字节0x00与CRC寄存器异或得到0x46。

第五个字节0x94与CRC寄存器异或得到0xD2。

第六个字节0xF4与CRC寄存器异或得到0x26。

第七个字节0x24与CRC寄存器异或得到0x0A。

第八个字节0x01与CRC寄存器异或得到0x8D。

  1. 最后得到的CRC值为0x8D,与输出结果[0x8D]一致,验算通过
给出一个算法满足输入0x46 0x00 0x00 0x00 0x94 0xF4 0x24 0x00 0x55得到0x26并且满足输入0x46 0x00 0x00 0x00 0x94 0xF4 0x24 0x01 0x55得到0x8D并给出验算过程

原文地址: https://www.cveoy.top/t/topic/eGYO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录