Comment calculer le CRC 16 avec polynôme x16 + x12 + x5 + 1

Je suis en train de faire l'interface avec un système et de leurs spécifications dont ils ont besoin pour calculer le CRC 16 pour la communication série. Voici un extrait de la documentation

"16 bits CCITT CRC du message en utilisant le standard polynôme, X16 +X12 +X5 +1. Les valeurs de départ sont toujours à 0 (zéro)"

Tout d'abord je n'ai trouvé 2-3 échantillons de code C# de comment le faire, et aucun des semblent me donner la valeur correcte. J'ai essayé celui http://www.sanity-free.com/133/crc_16_ccitt_in_csharp.html, mais je ne suis pas sûr de ce que pour définir la valeur initiale. J'ai essayé de zéros et ne fonctionne toujours pas.

De données, je suis en train de tester ça:

0x00 0x09 0x10 0x01 0x01 0x7C 0xF4 0xB8 0x00, 

la valeur CRC-je obtenir est

0xF2 0x24, 

cependant leur système dit qu'il devrait être

0xC0 0x2F

Ma compréhension est que le polynôme x16 + x12 + x5 + 1 = 0x11021, quand bien même je l'utiliser dans le code il me donne toujours pas la bonne réponse. Ce que je fais mal?

OriginalL'auteur fenix2222 | 2013-03-06