C++翻譯成Pascal.請高手指點是否翻譯錯誤.因為得到的內容不一樣.!(10分)

J

Jj1985

Unregistered / Unconfirmed
GUEST, unregistred user!
C++:
crc_data(char *buf, int len)
{
int i, j;
unsigned int crc = 0;
for(i = 0;
i < len;
i++)
{
crc = crc ^ ((unsigned int)buf<<8);
for(j = 0;
j < 8;
++j)
{
if(crc &amp;
0x8000)
crc = (crc << 1)^0x1021;
else
crc = crc << 1;
}
}
return crc;
}
Pascal:
function TForm1.Check_CRC(buf:TBytes;len:integer):word;//TBytes是個數組
var
i,j: integer;
crc:word;
begin
crc:=0;
for i:=0 to len-1do
begin
crc:=crc xor (word(buf) shl 8);
for j:=0 to 7do
begin
if (crc and $8000)=$8000 then
crc:=((crc shl 1) xor $1021)
else
crc:=crc shl 1;
end;
end;
result:=crc;
end;
 
unsigned int==> DWORD/Cardinal
 
function crc_data(Buf : PChar;
Len : Integer):DWord;
overload;
var
I, J: Integer;
crc : DWORD;
begin
crc := 0;
for I := 0 to len - 1do
begin
crc := crc xor (Byte(Buf) shl 8);
for J := 0 to 8 - 1do
if (crc and $8000)<>0 then
crc := (crc shl 1) xor $1021
else
crc := crc shl 1;
end;
Result := CRC;
end;

function crc_data(Buf : TBytes;
Len : Integer):DWord;
overload;
begin
Result := crc_data(PChar(@Buf[0]), Len);
end;
 
顶部