/********************************************************************函数名:u_int GetCrc(u_char *cData,u_int nSize)
描述:CRC校验程序
输入参数:cData 校验的数组 nSize 数组的长度
返回值:CRC校验码
********************************************************************/
u_int GetCrc(u_char *cData,u_int nSize)
{
u_char i;
u_int crc=0;
u_int s_crc; while(nSize--)
{
for(i=0x80; i!=0; i/=2)
{
if((crc&0x8000)!=0)
{
crc*=2;
crc^=0x1021;
} //余式CRC 乘以2 再求CRC
else
crc*=2; if(*cData & i)
crc^=0x1021; //再加上本位的CRC
}
cData++;
}
s_crc = crc/(16*16);
s_crc <<= 8;
s_crc |= crc%(16*16);
return s_crc;
}
描述:CRC校验程序
输入参数:cData 校验的数组 nSize 数组的长度
返回值:CRC校验码
********************************************************************/
u_int GetCrc(u_char *cData,u_int nSize)
{
u_char i;
u_int crc=0;
u_int s_crc; while(nSize--)
{
for(i=0x80; i!=0; i/=2)
{
if((crc&0x8000)!=0)
{
crc*=2;
crc^=0x1021;
} //余式CRC 乘以2 再求CRC
else
crc*=2; if(*cData & i)
crc^=0x1021; //再加上本位的CRC
}
cData++;
}
s_crc = crc/(16*16);
s_crc <<= 8;
s_crc |= crc%(16*16);
return s_crc;
}
解决方案 »
- saveDialog 和 txt文件的创建+写入
- 没有人用sreport控件吗?求助
- 如何使用 opendialog打开一个已经存在的数据表!
- 有关Delphi的XML Mapping Tool
- 谁知道如何不用DLL实现监控鼠标事件?
- 你搞得定吗?dll
- 关于网卡的金庸和启用,请问下面这段代码为什么在delphi7中报错
- 想实现这样的功能,像WORD一样,显示第X页/共X页
- 一个类变量执行Destroy中代码的时候,其中的数据是否已开始释放?
- 总有那么一些人问题解决了也不给分,打击大家回答问题的积极性
- delphi ShellExecute()同时打开多个网页怎么实现
- fastreport4.3 打印不出0
var
i: Byte;
crc: LongWord;
begin
crc := 0;
while nSize > 0 do
begin
i := $80;
while i <> 0 do
begin
if (crc and $8000) <> 0 then
crc := (crc shl 1) xor $1021
else
crc := crc shl 1;
if (cData^ and i) <> 0 then
crc := crc xor $1021;
i := i shr 1;
end;
Dec(nSize);
Inc(cData);
end;
Result := crc div (16 * 16);
Result := Result shl 8;
Result := Result or (crc mod (16*16));
end;