short crc16_ccitt(const unsigned char *buf, int len)
{
register int counter;
register unsigned short crc = 0;
for( counter = 0; counter < len; counter++)
crc = (crc<<8) ^ crc16tab[((crc>>8) ^ *(char *)buf++)&0x00FF];
return crc;
}function crc16(str: string): Word
var
i: Integer;
crc : word;
begin
for i := 1 to length(str) do
begin
crc :=
((crc shl 8) and $ffff) xor arrCRC16[(((crc shr 8) and $ffff) xor StrToInt(str[i])) and $00FF];
end;
end;
但是 结果竟然错了~~~,不知道哪里错了求解arrCRC16 是个 Word 类型的16位数组求解。哪里错了
解决方案 »
- sql语句优化
- 如何模拟一直按住"A"键,是一直按住不放的效果.
- 在服务器端数据库(access)中数据转换xml格式后传到客户端显示,高分请教,问题解决再加分!!急急急!!
- cvs配置问题,求救。
- 求delphi制作托盘程序的代码
- dbgrid排列一个很奇怪的问题呢?ACCESS数据库的
- 为人定制了一个小系统,一般维护期是多久,费用怎么算
- 如何将1.2542E34这样的数据转换成长数据类型?
- 怎样取整和取余?还有5.9分别取出5 和 0.9怎么做?
- 为什么在三层的客户端建立主从关系时会出现问题
- 弱智的问一个标准DLL调用的问题,VB可以,居然DELPHI不可以,在线求救啊!
- 在代理环境下如何使用IdSMPT自动发送邮件如果
crc := 0;
将StrToInt(str[i])改成Ord(str[i])试试。
var
i: Integer;
crc : word;
pdata : pbyte;
begin
crc := 0;
pdata := buf;
for i := 0 to len - 1 do
begin
crc := (crc shl 8) xor crc16tab[ ( (crc shl 8) xor pdata^ ) and $00FF ];
pdata := pbyte(pchar(buf)+ 1);
end;
end;