Einzelnen Beitrag anzeigen

gammatester

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

AW: Probleme mit CRC CCITT Prüfsumme

  Alt 8. Jun 2011, 23:04
Neben der Ansistring-Problematik: Für (New_dat_uc ^ ((Old_crc_us & 0x00ff) << 8)) ^ Crc_tab[(Old_crc_us >> 8)] gilt:

Old_crc_us entspricht CRC16, New_dat_uc entspricht (ord(s[i]) and $FF), also muß der Delphicode doch wohl eher wie folgt aussehen:

CRC16 := ((ord(s[i]) and $FF) xor ((CRC16 and $FF) shl 8)) xor Crc16Tab[CRC16 shr 8]; Wie man leicht sieht, ist der Tabellenindex nur CRC16 shr 8 (ein and $FF kann man sich sparen, da CRC16 ein word ist). Außerdem ist es immer hilfreich, wenn man einige komplette Testbeispiele angibt.

Edit: Ausgeschlafen sehe ich gerade, daß der C-Code auch den Initalwert -1 also in Delphi CRC16 := $FFFF; benutzt.

Geändert von gammatester ( 9. Jun 2011 um 07:27 Uhr)
  Mit Zitat antworten Zitat