不是不是:), 不过挺想考的谁帮我 ?--------------------------------------- 别人的代码 :------------------- type iArray = Record aArray :array[1..1024] of Byte; aLen :Integer; end;function GenerateCRC(var aPackage:iArray):Word; var crc:Word; ia,ib,ie,I,iCount:Integer; caTemp:iArray; begin crc:=0; ia:=0; ib:=0; for I:=1 to aPackage.aLen do caTemp.aArray[I]:=aPackage.aArray[I]; ie:=caTemp.aArray[1]; crc:=crc xor (ie shl 8); crc:=crc xor caTemp.aArray[2]; iCount:=aPackage.aLen; for I:=1 to (aPackage.aLen-2)*8 do begin while iCount>2 do begin if (caTemp.aArray[iCount] and 128)<>0 then ia:=1 else ia:=0; caTemp.aArray[iCount]:=caTemp.aArray[iCount] shl 1; if ib=1 then caTemp.aArray[iCount]:=caTemp.aArray[iCount]+1; ib:=ia; iCount:=iCount-1; end; if (crc and 32768)<>0 then begin crc:=crc shl 1; if ia=1 then crc:=crc+1; crc:=crc xor 4129; end else begin crc:=crc shl 1; if ia=1 then crc:=crc+1; end; iCount:=aPackage.aLen; end; Result:=crc; end;
帮忙啦!!
你是研究生吧.
怕~
别人的代码 :-------------------
type
iArray = Record
aArray :array[1..1024] of Byte;
aLen :Integer;
end;function GenerateCRC(var aPackage:iArray):Word;
var
crc:Word;
ia,ib,ie,I,iCount:Integer;
caTemp:iArray;
begin
crc:=0;
ia:=0;
ib:=0;
for I:=1 to aPackage.aLen do
caTemp.aArray[I]:=aPackage.aArray[I];
ie:=caTemp.aArray[1];
crc:=crc xor (ie shl 8);
crc:=crc xor caTemp.aArray[2];
iCount:=aPackage.aLen;
for I:=1 to (aPackage.aLen-2)*8 do
begin
while iCount>2 do
begin
if (caTemp.aArray[iCount] and 128)<>0 then
ia:=1
else
ia:=0;
caTemp.aArray[iCount]:=caTemp.aArray[iCount] shl 1;
if ib=1 then
caTemp.aArray[iCount]:=caTemp.aArray[iCount]+1;
ib:=ia;
iCount:=iCount-1;
end;
if (crc and 32768)<>0 then
begin
crc:=crc shl 1;
if ia=1 then
crc:=crc+1;
crc:=crc xor 4129;
end
else begin
crc:=crc shl 1;
if ia=1 then
crc:=crc+1;
end;
iCount:=aPackage.aLen;
end;
Result:=crc;
end;