CRC parameters
 
  CRC order  (1..64)  
  CRC polynom  (hex)  
  Initial value  (hex)   nondirect   direct
  Final XOR value  (hex)  

 reverse data bytes      reverse CRC result before Final XOR
       

 
   Data sequence

 
   Result

 

Version updates:
2013-05-30: Correct CRC-CCITT KROHNE by R.Lokker@krohne.com E.Meral@krohne.com Joe Geluso http://srecord.sourceforge.net/crc16-ccitt.html
21th of September 2005: Add GDC2 for company KROHNE by R.Lokker@krohne-altometer.nl
21th of Juli 2003: question#1: how is a crc polynom correctly reflected if the LSB is not 1 (but the high-bit of the polynom is always assumed as 1)??
21th of Juli 2003: question#2: in c-code, be careful using polynoms having a LSB of 0 (e. g. XMODEM 0x8408)... code doesn't work for such cases!!! Any ideas how to convert direct to nondirect values with polynoms having LSB=0?
21th of Juli 2003: removed bug in reflect() in javascript code, affecting final crc reflecting of crc orders with order%7 != 0
4th of February 2003: outcommented the "LSB=1 test" in JAVASCRIPT and C code
18th of January 2003: included crc masking after converting non-direct to direct initial crc (c-code only, javascript-code is and was correct)
17th of January 2003: included comment concerning standard parameter set values (like CRC-CCITT), see below; included new links to crc pages
13th of January 2003: in crctester.c: most of the int's replaced by unsigned longs to avoid compilation errors (especially on 16 bit machines)

This CRC calculator shall support hardware and software designers to check their specific CRC routine. Most of the theory for the JAVASCRIPT is taken from the well-known PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS article written by Ross N. Williams.

The calculator has the following features:
  • CRC polynoms with orders of 1...64 (counted without the leading '1' bit).
  • reversed CRC polynoms can be easily determined.
  • initial and final XOR values can be set.
  • initial CRC values of algorithms with (click 'nondirect') or without (click 'direct') augmented zero bits can be converted from one into another.
  • both normal and reflected CRC (refin, refout).
  • common CRC parameter sets are given by buttons below the parameter table.
    (please verify values, there are e. g. different init values for calculating the CRC-CCITT, depending on if the algorithm is direct or indirect. To assign an initial value to the direct or nondirect algorithm, you can click the appropriate radio button on the right side.)
  • data sequence can be either NULL or a sequence of characters and hexadecimal values between %00...%FF, so is '%31%32%33' the same as '123'.



Next is a list of CRC polynoms that I could find:
   CCITT-32:   0x04C11DB7  =  x32 + x26 +  x23 + x22 + x16 + x12 +
                              x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

   CRC-16:     0x8005      =  x16 + x15 + x2 + 1

   CRC-CCITT:  0x1021      =  x16 + x12 + x5 + 1

   CRC-XMODEM: 0x8408      =  x16 + x15 + x10 + x3

   12bit-CRC:  0x80f       =  x12 + x11 + x3 + x2 + x + 1

   10bit-CRC:  0x233       =  x10 + x9  + x5  + x4  + x  + 1

   8bit-CRC:   0x07        =  x8  + x2  + x + 1

So have a nice time even in a reflected world :-)
Sven Reifegerste