CRC 全称为Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。
有兴趣的可以参考: 循环冗余检验 (CRC) 算法原理.
对于如何创建CAPL DLL可以参考 关于CAPL中Seed2Key DLL生成与调用
CrcHelper 集成了常用的CRC8, CRC16, CRC32,CRC64.
on start
{
int i;
/*Init source data is 0---9*/
for(i=0;i<dataLen;i++)
{
srcdata[i]=i;
}
}
on key 'a'
{
/*CRC16 CCITT Table BE-Out*/
byte startData[2]={0xFF,0xFF};
byte ResData[2];
dllCRC16Cals(srcdata,dataLen,startData,1,ResData);
write("Data: %x %x %x %x %x %x %x %x %x %x",
srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
/*Result: C2 41*/
write("CRC16Cals result: %x %x",ResData[0],ResData[1]);
}
on key 'b'
{
byte startData[4]={0xFF,0xFF,0xFF,0xFF};
byte ResData[4];
dllCRC32Cals(srcdata,dataLen,startData,1,ResData);
write("Data: %x %x %x %x %x %x %x %x %x %x",
srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
/*Result: 45 6C D7 46*/
write("CRC32Cals result: %x %x %x %x",ResData[0],ResData[1],ResData[2],ResData[3]);
}
on key 'c'
{
byte startData[4]={0xFF,0xFF,0xFF,0xFF};
byte ResData[4];
dllCRC32P4Cals(srcdata,dataLen,startData,1,ResData);
write("Data: %x %x %x %x %x %x %x %x %x %x",
srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
/*Result: 94 51 9C 58*/
write("CRC32Cals result: %x %x %x %x",ResData[0],ResData[1],ResData[2],ResData[3]);
}
欢迎关注六度杂货铺公众号, 回复 CrcHelper 即可索取。