Der Code sagt, dass das Polynom 0x8048 ist. Letztlich das gleiche wie
die 0x1021 von Xmodem bit-swapped.
Aber: das Bit-Swapping bei CCITT ist nicht nur beim Polynom, sondern
generell. (Hängt damit zusammen, dass Kommunikationsprotokolle immer Bit
0 zuerst senden.) Musst du mal gucken, ob eine der "Reflektion"-Optionen
(oder beide?) dann genau das bewirken.
Schieb doch einfach mal einen Testvektor da durch. Aus 802.15.4 kenne
ich den hier:
Da kommt 0x3088 als Ergebnis raus. Dann mal diesen Testvektor z. B. hier
einhacken:
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html
Einstellungen:
CRC 16, Polynom 0x1021, Init Value 0xFFFF, Input- & Resultreflect
aktiviert, dann kommt man auf das selbe Ergebnis.
Im HxD gilt das gleiche:
CRC 16,
Polynom 0x1021,
Startwert 0xFFFF,
Ein-/Ausgang reflektieren
Vielen Dank!
Werner schrieb:> Da kommt 0x3088 als Ergebnis raus
Seltsam. Es sollte 0 rauskommen.
Ich hatte das vor Jahrzehnten mal geschrieben (als ich bei Atmel mit
IEEE-802.15.4-Transceivern gearbeitet habe), leider finde ich den
Sourcecode gerade nicht mehr, aber das Binary funktioniert noch:
1
% ./bin/gencrc 0x02 0x00 0x6A 0xE4 0x79
2
CRC = 0x0000
3
% ./bin/gencrc 0x02 0x00 0x6A
4
CRC = 0x79e4
Ich glaube, der Unterschied ist, dass der Startvektor nicht 0xFFFF
sondern 0x0000 ist.