![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод с С++
Лана Розанова © (2003-01-09 16:51:00)Помоготе перевести код на Pascal.
unsigned getKS(unsigned char *uk, int kol)
{
unsigned crc;
int i,k;
crc=0xFFFF;
for(i=0;i=1;crc^=0xA001;}
else
crc>>=1;
}
}
return crc;
}
СПАСИБО!!!
Dimka Maslov (2003-01-09 17:36:00) [1]Вот только вложенный цикл for k:= 0 to 7 забыл.
Dimka Maslov (2003-01-09 17:32:00) [2]Примерно так:
function getKS(uk: PChar; kol: Integer): Word;
var
crc: Word;
i, k: Integer;
begin
crc:=$FFFF;
for i:=0 to kol-1 do begin
crc:=crc xor PByte(uk)^;
Inc(uk);
if crc and 1 <> 0 then begin
crc:=crc shr 1;
crc:=crc xor $A001;
end else crc:=crc shr 1;
end;
Result := crc;
end;
Smithson (2003-01-09 17:29:00) [3]Эээээээээээээ, погорячился
CRC := CRC xor uk[i +1];. Так правильно.
Smithson (2003-01-09 17:28:00) [4]
function getKS(var uk: String; Kol: Integer): UInteger;
var CRC: UInteger;
I, K: Integer;
Begin
CRC := $FFFF;
for I := 0 to Kol-1 do begin
CRC := CRC xor uk[i];
for K := 0 to 7 do begin
if (CRC and 1 ) = 1 then begin
CRC := CRC shr 1;
CRC := CRC xor $A001;
end
else
CRC := CRC shr 1;
end;
end;
Result := CRC;
End;
UInteger может быть WORD или Integer - по вкусу. Имелся в виду word. Перевод дословный, можно кое-что оптимизнуть.