首先,我们需要创建一个CRC8的查找表,这个表包含256个值,每个值对应一个可能的字节值。 # 导入所需的库defcreate_crc8_table(polynomial=0x31):crc_table=[]forbyteinrange(256):crc=bytefor_inrange(8):# 对每一个比特执行8次ifcrc&0x80:# 检查最高位crc=(crc<<1)^polynomial# 左移并与多项式异或els...
unsigned char CRC8_Table(unsigned char *p, char counter) { unsigned char crc8 = 0; for( ; counter > 0; counter--) { crc8 = CRC8Table[crc8^*p]; //查表得到CRC码 p++; } return crc8; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19....
def generate_crc8_table(poly=0x07): table = [] for i in range(256): crc = i for _ in range(8): if crc & 0x80: crc = (crc << 1) ^ poly else: crc <<= 1 crc &= 0xFF # 保证CRC值在0-255之间 table.append(crc) return table crc8_table = genera...
3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与生成多项式码相异或。 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。 const uint16 CRC_Table[256] ...
crc8 = CRC8Table[crc8^*p]; //查表得到CRC码 p++; } return crc8; } DS18B20的两种校验CRC码的方法本质上都是一样的。查表法是对0x00~0xff这256个数依次生成与每一个数对应的CRC码所组合成的表,每次算一字节数据的CRC码不用经过calcrc_1byte(uchar abyte)这个函数对每个数据的最低位进行判断是1...
返回CRC值 */ uint8_t get_crc8(const void *Buf, uint32_t Len) { uint8_t *input = (uint8_t*)Buf; uint8_t fcs = (uint8_t)0xFF; int32_t i; for (i = 0; i < (int32_t)Len; i++) fcs = R_CRCTABLE[fcs ^ (uint8_t)input[i]]; return (uint8_t) (0xFF - fcs)...
1. 查表法: publicclassCRC8{///<summary>///CRC8位校验表///</summary>privatebyte[]CRC8Table=newbyte[]{0,94,188,226,97,63,221,131,194,156,126,32,163
C#CRC8校验1. 查表法:public class CRC8 { ///<summary> /// CRC8位校验表 ///</summary> private byte[] CRC8Table = new byte[] { 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,157,195,33,127,252,162,64,30, 95,1,227,189,62,96,130,220,35,125,159,193,66,...
定义CRC8表:CRC8表是一个256字节的数组,用于存储预先计算好的CRC8值。可以在程序中定义一个静态全局的CRC8表,以便在计算CRC8时进行查表操作。 代码语言:c 复制 staticconstunsignedcharcrc8_table[256]={0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,0x...
:crc_table=[]foriinrange(256):crc=ifor_inrange(8):ifcrc&0x80:# 如果 CRC 的最高位为 1crc=(crc<<1)^poly# 左移并与多项式取 XORelse:crc<<=1# 左移crc&=0xFF# 保持 CRC 在一个字节内crc_table.append(crc)returncrc_table# 使用多项式 0x8Cpoly=0x8Ccrc_table=init_crc8_table(poly...