Question

Je travaille de http://www.ross.net/crc/download/ crc_v3.txt , et en utilisant les 16 bits 0x8005 polynomial.

Mon message est 0xAE.

Ce site http://www.lammertbies.nl/comm/info/ crc-calculation.html génère un calcul correct à partir d'autres données que j'ai.

Ceci est la sortie de mon code, décrivant chaque étape.

Poly: 1010000000000001
Initial message: 01110101
Message: 011101010000000000000000 24
crcreg: 0000000000000000
crcreg: 0000000000000001
crcreg: 0000000000000011
crcreg: 0000000000000111
crcreg: 0000000000001110
crcreg: 0000000000011101
crcreg: 0000000000111010
crcreg: 0000000001110101
crcreg: 0000000011101010
crcreg: 0000000111010100
crcreg: 0000001110101000
crcreg: 0000011101010000
crcreg: 0000111010100000
crcreg: 0001110101000000
crcreg: 0011101010000000
crcreg: 0111010100000000
crcreg: 1110101000000000
crcreg: 1101010000000000  //Here we had a 1 pop off the shift reg, so we XOR in the poly.
^poly:  1010000000000001
=crcreg:0111010000000001

crcreg: 1110100000000010
crcreg: 1101000000000100
^poly:  1010000000000001
=crcreg:0111000000000101

crcreg: 1110000000001010
crcreg: 1100000000010100
^poly:  1010000000000001
=crcreg:0110000000010101

crcreg: 1100000000101010
crcreg: 1000000001010100
^poly:  1010000000000001
=crcreg:0010000001010101

CRC:    0010000001010101

4 aa
R-CRC:  1010101000000100   //Reversed, just in case MSB/LSB display got hosed.

55 20

Le CRC16 attendu est 0xBC81

Était-ce utile?

La solution

Votre polynôme est inversée: Vous avez besoin des coefficients pour des puissances plus élevées de x à être représentés par les bits à gauche. Essayez d'inverser les bits de votre polynôme (représentant comme 1000000000000101) et je pense que vous obtiendrez le résultat correct.

Vous pouvez également besoin d'inverser votre entrée et de sortie, en fonction de la mise en œuvre particulière du CRC que vous utilisez est défini (LSB-première ou MSB en premier).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top