Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

Перевод с С++   Найти похожие ветки 

 
Лана Розанова   (2003-01-09 16:51) [0]

Помоготе перевести код на Pascal.


unsigned getKS(unsigned char *uk, int kol)
{
unsigned crc;
int i,k;
crc=0xFFFF;

for(i=0;i<kol;i++)
{
crc^=*uk++;
for(k=o;k<8;k++)
{
if (crc&1)
{crc>>=1;crc^=0xA001;}
else
crc>>=1;
}
}
return crc;
}


СПАСИБО!!!


 
Smithson ©   (2003-01-09 17:28) [1]


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. Перевод дословный, можно кое-что оптимизнуть.


 
Smithson ©   (2003-01-09 17:29) [2]

Эээээээээээээ, погорячился CRC := CRC xor uk[i +1];. Так правильно.


 
Dimka Maslov ©   (2003-01-09 17:32) [3]

Примерно так:
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;


 
Dimka Maslov ©   (2003-01-09 17:36) [4]

Вот только вложенный цикл for k:= 0 to 7 забыл.



Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-62462
SergeySS
2003-01-08 17:43
2003.01.20
Нужна помощь!


1-62653
Влад_Ч
2003-01-09 19:06
2003.01.20
Быстрая запись на диск


1-62493
leonon
2003-01-08 13:05
2003.01.20
MDI, запуск MDIChild формы в отдельном потоке


14-62720
ДедушкаКо
2002-12-28 17:51
2003.01.20
давненько не був


14-62779
Vovkin
2002-12-27 22:56
2003.01.20
,,,, delphi.mastak говоришь???