|

20精币
如题,公司有个模块,CRC校验算法:CRC-4 其多项式为:x4+x+1 简式为:3 引用标准:ITU G.704
下面是C语言的一段CRC-4函数,各位能不能帮忙翻译下成易语言。感谢!
//
//用软件计算CRC4函数
//
void CalulateCRCbySoft(unsigned char *pucData,unsigned char wLength,unsigned char *pOutData)
{
unsigned char ucTemp;
unsigned int wValue;
unsigned int crc_tbl[16]={0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef}; //四位余式表
wValue=0;
//本字节的CRC余式等于上一字节的CRC余式的低12位左移4位后,
//再加上上一字节CRC余式右移4位(也既取高4位)和本字节之和后所求得的CRC码
while(wLength--!=0)
{
//根据四位CRC余式表,先计算高四位CRC余式
ucTemp=((wValue>>8))>>4;
wValue<<=4;
wValue^=crc_tbl[ucTemp^((*pucData)>>4)];
//再计算低四位余式
ucTemp=((wValue>>8))>>4;
wValue<<=4;
wValue^=crc_tbl[ucTemp^((*pucData)&0x0f)];
pucData++;
}
pOutData[0]=wValue;
pOutData[1]=(wValue>>8);
}
|
最佳答案
查看完整内容
.版本 2 .子程序 CalulateCRCbySoft .参数 pucData, 字节型, 数组 .参数 wLength, 整数型 .参数 pOutData, 字节型, 参考 数组 .局部变量 ucTemp, 字节型 .局部变量 wValue, 整数型 .局部变量 crc_tbl, 整数型, , "16" .局部变量 数组索引, 整数型 crc_tbl = {0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7, 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef} wValue = 0 数组索引 = 1 .判断循环首 (0 ≠ ...
|