Thema: Delphi CRC 8 berechnen ?

Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

Re: CRC 8 berechnen ?

  Alt 2. Dez 2009, 23:33
Zitat von Blamaster:
@ himitsu
Ich weiß nun schonmal soviel.

A: array[0..2] of byte;

A[0] := 1
A[1] := 2
A[2] := 3

Die Crc8 der 3 Bytes müsste 216 ergeben.
...

Lässt das Rückschlüsse auf das verwendete Polynom zu ?
Aber sicher, das Poly ist $8C. Hier ein Programm für Deinen Fall
Delphi-Quellcode:
program crc8blam;

{$ifdef win32}
{$apptype console}
{$endif}
const
  test: array[0..2] of byte = (1,2,3);

{---------------------------------------------------------------------------}
function crc8_blamaster(const b: array of byte): byte;
  {-CRC8 für Blamaster}
const
  Poly = $8C;
  {Rocksoft parameter:
  (poly  : $31;  // $8C reflected
    init  : $00;
    xorout : $00;
    check  : $F4;
    width  : 8;
    refin  : true;
    refout : true;)
  }

var
  crc: byte;
  i,j: integer;
begin
   crc := 0;
   for i:=low(b) to high(b) do begin
     crc := crc xor b[i];
     for j:=1 to 8 do begin
       if odd(crc) then crc := (crc shr 1) xor Poly
       else crc := crc shr 1;
     end;
   end;
   crc8_blamaster := crc;
end;


begin
  writeln('Test:',crc8_blamaster(test));
end.
Kannst Du mit beliebigem array of byte aufrufen. Info zum Rocksoftmodel auf meiner CRC-Seite

Ausgabe des Programms:
Code:
D:\BP_WE\WORK\CRC_HASH>D:\DMX\M10\DCC32 -b crc8blam.pas
Borland Delphi for Win32 compiler version 18.0
Copyright (c) 1983,2005 Borland Software Corporation
crc8blam.pas(42)
43 lines, 0.10 seconds, 12152 bytes code, 12168 bytes data.

D:\BP_WE\WORK\CRC_HASH>crc8blam.exe
Test:216
Gruß Gammatester
  Mit Zitat antworten Zitat