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

Вниз

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

 
Cosinus ©   (2004-12-28 10:47) [0]


unsigned long xortable[24] = {
0x336D1A92, 0x06EA8CE3, 0x0DD519C6, 0x1BAA338C, 0x37546718, 0x0E9877F7, 0x1D30EFEE, 0x3A61DFDC,
0x0173CE8E, 0x02E79D1C, 0x05CF3A38, 0x0B9E7470, 0x173CE8E0, 0x2E79D1C0, 0x3CC31A47, 0x19B68D49,
0x00C112BD, 0x0182257A, 0x03044AF4, 0x060895E8, 0x0C112BD0, 0x182257A0, 0x3044AF40, 0x00B9E747,
0x2030B9C7, 0x2051CA49, 0x20932D55, 0x2116E36D, 0x221D7F1D, 0x240A47FD, 0x2824363D, 0x3078D5BD};

unsigned long en_checksum(unsigned long en)
{
unsigned long cs, sn;
   cs = 0x2c201919;
   sn = en;
for (int i = 0; i < 32; i++)
    if ((sn ^ (1UL << i)) < sn)
        cs = cs ^ xortable[i];
   return cs;
}


 
BiN ©   (2004-12-28 11:02) [1]

Что-то вроде этого:


const
 xortable: array [0..32-1] of Cardinal = // у тебя ошибочно указано 24 элемента вместо 32-х
 ($336D1A92,$06EA8CE3,$0DD519C6,$1BAA338C,$37546718,$0E9877F7,$1D30EFEE,$3A61DFDC,
 $0173CE8E,$02E79D1C,$05CF3A38,$0B9E7470,$173CE8E0,$2E79D1C0,$3CC31A47,$19B68D49,
 $00C112BD,$0182257A,$03044AF4,$060895E8,$0C112BD0,$182257A0,$3044AF40,$00B9E747,
 $2030B9C7,$2051CA49,$20932D55,$2116E36D,$221D7F1D,$240A47FD,$2824363D,$3078D5BD);

implementation

function en_checksum(en: Cardinal): Cardinal;
var
 cs: Cardinal;
 sn: Cardinal;
 i:Integer;
begin
 cs:= $2c201919;
 sn:= en;
 for i:=0 to 32-1 do
 if (sn xor (Cardinal(1) shl i))<sn
 then
 cs:= cs xor xortable[i];
 begin
   result:= cs;
   exit;
 end;
end;


 
wal ©   (2004-12-28 11:02) [2]


const xortable:array[0..23] of dword = (336d1a92$, ...);
function en_checksumm(en: dword):dword;
var cs, sn: dword; i: integer;
begin
 cs:= 2c201919$;
 sn=en;
 for i:=0 to 31 do
   if ((sn xor (dword(1) shl i)) < sn) then
     cs := cs xor xortable[i];
 result := cs
end;

Примерно так, но работать это не будет.

С уважением.


 
BiN ©   (2004-12-28 11:03) [3]

сделано c2pas-ом


 
wal ©   (2004-12-28 11:05) [4]

Ошибочка вышла. $ перед числом ставить надо, а не после.

С уважением.


 
Cosinus ©   (2004-12-28 11:09) [5]

Ок, спасибо огромное :)


> wal ©   (28.12.04 11:02) [2]
Почему?


 
Cosinus ©   (2004-12-28 11:09) [6]


> wal ©   (28.12.04 11:05) [4]
Это как ни странно понятно ;)))


 
wal ©   (2004-12-28 11:10) [7]

>Cosinus ©   (28.12.04 11:09) [5]
>Почему?
У BiN"а в коде написано почему :).

С уважением.


 
wal ©   (2004-12-28 11:12) [8]

Это, если я ничего не путаю CRC-32?


 
Cosinus ©   (2004-12-28 11:15) [9]


> wal ©   (28.12.04 11:12) [8]
Почти ;) CRC30



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

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

Наверх




Память: 0.48 MB
Время: 0.039 c
9-1096063372
Jus
2004-09-25 02:02
2005.01.16
Помогите! Не могу придумать как мне обнулить анимацию! (DelphiX)


1-1104315116
snake_r
2004-12-29 13:11
2005.01.16
CheckBox d DBGrid


14-1103965671
Rouse_
2004-12-25 12:07
2005.01.16
C Днем Рождения 25 Декабря


14-1103900292
guest_Dmitry
2004-12-24 17:58
2005.01.16
Какие бумаги должны оформляться на замену железа?


1-1103910603
LedWorm
2004-12-24 20:50
2005.01.16
Два вопроса по работе с файлами