CRC3校验算法
C 在线工具 | 菜鸟工具
CRC3 ,16位数据校验使用,多项式 g(x) = x3+x+1 -> 0b1011
#include <stdio.h>
#include <stdint.h>
uint8_t Crc3(const uint32_t data, uint8_t len){uint8_t chk=0x08;uint8_t poly =0x03;/*多顶式1011 */uint8_t poly_len =4;uint8_t alu= 0x00;alu=(data >> len-poly_len)&0x0F;for(int i = len-poly_len-1; i>=0; i--){printf("alu : 0x%02x\n",alu);if(alu & chk)/* bit3 ==1 */{alu ^= poly; }alu = ((alu)<<1) | (data>>i &0x01);}printf("alu : 0x%02x\n",alu);return alu&0x07;
}int main()
{uint8_t alu;/* Write C code in this online editor and run it. */printf("Hello, World! \n");alu = Crc3(0x00381E08, 22);printf("alu : 0x%02x\n",alu);return 0;
}