Вот правильный код из первой ссылки:
Код:
function CRC24(s : String) : Cardinal;
const
crcInit = $000B704CE;
crcPoly = $001864CFB;
var
i,k: integer;
begin
Result:= crcInit;
for k:=1 to length(s) do
begin
Result:= Result xor (ord(s[k]) shl 16);
for i:=0 to 7 do
begin
Result:= Result shl 1;
if (Result and $1000000) <> 0 then
Result:= Result xor crcPoly;
end;
end;
Result:= Result and $FFFFFF;
end;
Но он, вроде, дает тот же результат, что и твой.
Ты уверен, что там на вход идет строка??? Может там ffff012001 это бинарное значение?