2009-12-16 12 views
5

Qualcuno sa di alcuni vettori di test CRC per CRC16-CCITT?Vettori di test CRC per CRC16 (CCITT)

Non ho un'implementazione CRC di cui mi posso fidare e ho bisogno di testare l'implementazione di qualcuno o la mia. (Per CRC32, io uso il PNG code come il gold standard, in quanto è un'implementazione di riferimento affidabile.)

(this site's CRC calculator sembra utile, ma ho bisogno di verificare la correttezza in qualche modo)


UPDATE: È possibile che questo calcolatore di CRC sembra utile ma richiede solo ASCII, nessun modo per entrare in esadecimale. --- è molto difficile inserire l'input esadecimale, però. (ASCII 12 in esadecimale può essere inserito come %31%32, quindi non si può semplicemente incollare + una lunga serie di byte esadecimali copiare, anche il carattere % non sembra avere una via di fuga)

ho verificato this online calculator, che prende input esadecimali, contro i vettori di test Boost per CRC16, CRC16-CCITT e CRC32.

risposta

2

Boost ha una buona implementazione CRC che è possibile testare. Per quanto ne so è possibile configurarlo per CRC16. http://www.boost.org/doc/libs/1_41_0/libs/crc/index.html

Sembra che ci sia un esempio di come configurarlo per simulare CCITT in questa pagina: http://www.boost.org/doc/libs/1_41_0/libs/crc/crc.html

+1

+1 ed accettato: non per la ragione che lei ha citato, ma perché il loro codice di prova ha un vettore di prova: http://www.boost.org/doc/libs/1_41_0/libs/crc/test /crc_test.cpp (vedi std_data e std_crc_ccitt_result) –

+0

Grande, anche una gallina cieca a volte trova un chicco di mais :) Scherzi a parte, le librerie di boost tendono a sorprendere positivamente. L'implementazione di – Laserallan

+0

può essere piacevole e corretta, ma come la maggior parte delle librerie di modelli astratte è piuttosto opaca da guardare. :-( –

0

Qui ci sono due vettori di prova per CCITT-16 CRC (il cui polinomio è X16 + X12 + X5 + 1 (0x1021 nella rappresentazione esadecimale big-endian ..); valore iniziale CRC è 0xFFFF XOR valore out è pari a zero) sono:

0x12345670 = 0xB1E4 

0x5A261977 = 0x1AAD