右移方式,CRC多项式即权值=CRC16Table[0x80] 左移方式,CRC多项式即权值=CRC16Table[0x01]=0x1021 本文采用CRC位域4查表方式,故表为: CRC16Table[16]={CRC[0x0000],CRC[0x0001],CRC[0x0002],...CRC[0x000D],CRC[0x000E],CRC[0x000F]}; 即左移方式取列表: CRC16Table[16]={ 0x0000, 0x1021,...
table:用于存储预计算的 CRC 表。 initialValue:CRC 计算的初始值0xFFFF。 GenerateTable 方法: 生成CRC 表,用于快速计算 CRC 值。 ComputeChecksum 方法: 计算给定字节数组的 CRC16-CCITT 校验和。 ComputeChecksumBytes 方法: 返回CRC 校验和的字节数组表示。
Int32 Index = Low ^ b; Low = High ^ CRC16TABLE_LO[Index]; High = CRC16TABLE_HI[Index]; } } return (High == 0xF0 && Low == 0xB8); } /// <summary> /// CRC16查找表高字节 /// </summary> private static readonly Byte[] CRC16TABLE_HI = { 0x00, 0x11, 0x23, 0x32, ...
//CRC16-CCITT查找表 const unsigned short crc16_table[256] = { 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7, 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef, 0x1231,0x0210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6, 0x9339,0x8318,0xb37b,0xa35a,0xd...
} Table_CRC[i] = ( unsigned long )nAccum; } } // 计算 16 位 CRC 值, CRC-16 或 CRC-CCITT unsigned short CRC_16( unsigned char * aData, unsigned long aSize ) { unsigned long i; unsigned short nAccum = 0; BuildTable16(cnCRC_CCITT ); for ( i = 0; i < aSize; i++ ) ...
crc_reg = (crc_reg >> 8) ^ crc16_ccitt_table[(crc_reg ^ *message++) & 0xff]; return crc_reg; } crc16_ccitt_table通过以下代码生成: int main() { unsigned char index = 0; unsigned short to_xor; int i; printf("unsigned short crc16_ccitt_table[256] =\n{"); ...
crc = (crc >> 8) ^crc16table[(crc^ text[i]) & 0xFF]; } NSLog(@"crc %d",crc); NSLog(@"%04x",crc); //我这里需要输出4位的16进制字符串 NSString *crcstring = [NSString stringWithFormat:@"%04x",crc]; returncrcstring; }
crc= crc16_ccitt_table[(crc >>8^ *pbuf++) &0xff] ^ (crc <<8); }returncrc; } 测试一下 intmain(void) { unsignedcharstring[8]= {0x02,0x0A,0x00,0x03,0xE6,0x02,0x08,0x03}; unsignedshortCRC_Value; CRC_Value= crc16_ccitt(string,8);//得到CRC值printf("CRC_Value : %04X\n"...
crc16_table_entry(Entry) -> case band(Entry, 1) of 0 -> Rshift(Entry, 1); _ -> xor(Rshift(Entry, 1), 0x8408) end. #反转最低有效字节和最高有效字节 crc16_reverse(Crc) -> xor(Lshift(and(Crc, 0xFF), 8), Rshift(and(Crc, 0xFF00), 8)). ``` 你可以调用`crc16ccitt:crc16...
68、to_xor; return crc_reg; 现在内循环只与index相关了,可以事先以数组形式生成一个表crc16_ccitt_table,使得to_xor = crc16_ccitt_tableindex,于是可以简化为: Java代码 1. unsigned short do_crc(unsigned char *message, unsigned int len) 2. 3. unsigned sh...