Главная страница
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.019 c
6-62718
Filat
2002-11-19 21:35
2003.01.20
Socket - что это такое?


1-62496
Palladin
2003-01-09 16:22
2003.01.20
вызов метода потока


4-62943
z0ne
2002-11-29 13:10
2003.01.20
Проблема с PlayEnhMetafile


1-62558
Артём К
2003-01-11 08:23
2003.01.20
Заливка в виде градиента для формы


3-62369
vopros
2002-12-24 16:24
2003.01.20
Есть Qreport там как известно настройка принтера и печать