Mit dem zweiten Datensatz (Beispiel 2: Wert: "385183474" Prüfsumme: "45942") liefert mein Pascal-Code den richtigen Wert, hier die komplette Funktion:
Delphi-Quellcode:
function GenerateCRC16(const s: ansistring): word;
var
crc16: word;
i: integer;
begin
crc16 := $FFFF;
for i:=1 to length(s) do begin
crc16 := ((ord(s[i]) and $ff) xor ((crc16 and $ff) shl 8)) xor Crc16Tab[crc16 shr 8];
end;
result := crc16;
end;
Den ersten Datensatz solltest Du halt noch mal kontrollieren.