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