Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
ВнизПеревод с С++ Найти похожие ветки
← →
Лана Розанова (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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c