高手帮忙: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;
} 展开
{
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;
} 展开
展开全部
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;
}
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询