Das ist ein bekannter CRC-Algorithmus
CRC-8/Dallas-1-Wire. Du mußt die Bytes mit den LSB zuerst eingegen. Also bei Dir werden die Bytes $22,$E3,$F8,$1F,$00,$00,$00 in dieser Reihenfolge verarbeiten. Hier ist das vollständige Beispiel mit meinen CRC-Model-Units:
Delphi-Quellcode:
{$ifdef win32}
{$apptype console}
{$endif}
uses
mem_util,crcmodel,crcm_cat;
const
test:
array[0..6]
of byte = ($22,$E3,$F8,$1F,$00,$00,$00);
var
ctx: TCRC_ctx;
crc: longint;
begin
cm_Create(CRC8_DALLAS1W,
nil,ctx);
cm_Full(ctx, CRC, @test, sizeof(test));
writeln(ctx.
name,'
(',HexStr(@test, sizeof(test)),'
)=$',HexByte(CRC));
end.
Ausgabe: CRC-8/Dallas-1-Wire(22e3f81f000000)=$
df
Die Units gibts als Opensource-Freeware via
http://home.netsurf.de/wolfgang.ehrh....html#crcmodel
Gruß Gammatester