高手帮忙:c转换成delphi代码(CRC-CCITT)

uintGetCrcWord(uchar*Phex,ucharlen)//ptr为数据指针,len为数据长度{uchari;uintcrc=0;while(len--){... uint GetCrcWord(uchar *Phex,uchar len) // ptr 为数据指针,len 为数据长度
{
uchar i;
uint crc=0;

while(len--)
{
for(i=0x80; i!=0; i>>=1)
{
if((crc&0x8000)!=0)
{
crc<<=1;
crc^=0x1021;
}
else
crc<<=1;

if((*Phex&i)!=0)
crc^=0x1021;
}
Phex++;
}
return crc;
}
展开
 我来答
renzhumin2
2010-07-21 · TA获得超过163个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:274万
展开全部
function GetCrcWord(var Phex:byte;Len:byte ):uint;
var
i : byte;
crc : uint;
begin
crc := 0;
i := $80;
While(len)>0 do
begin
while I<>0 do
begin
if (crc and $8000)<>0 then
begin
crc := crc shl 1;
crc := crc xor $1021;
end else
crc := crc shl 1;
if (Phex and I)<>0 then crc := crc xor $1021;
i := i shr 1;
inc(phex);
end;
len := len-1;

end;
result :=crc;
end;

uint GetCrcWord(uchar *Phex,uchar len) // ptr 为数据指针,len 为数据长度
{
uchar i;
uint crc=0;
//循环 len -1 大于0时
while(len--)
{
//循环 I =$80开始 i每次右移1位,只要i不等于0
for(i=0x80; i!=0; i>>=1)
{
//如果CRC与$8000运算,不等于0
if((crc&0x8000)!=0)
{
//左移1位
crc<<=1;
//将CRC和$1021异或运算
crc^=0x1021;
}
else
//左移一位
crc<<=1;
//判断 (PHEX与I运算)
if((*Phex&i)!=0)
//将CRC和$1021异或运算
crc^=0x1021;
}
//PHEX每次加1
Phex++;
}
//返回值
return crc;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式