[ Home | Up | Prev | Next | Disclaimer ]
|CRC width (bits)||Records|
polyis written in the hexadecimal, direct notation found in MSB-first code. The least significant bit corresponds to the inward end of the shift register, and is always set. The highest-order term is omitted.
initis written in the hexadecimal, direct notation found in MSB-first code. The least significant bit corresponds to the inward end of the shift register.
false, specifies that the characters of the message are read bit-by-bit, most significant bit (MSB) first; if equal to
true, the characters are read bit-by-bit, least significant bit (LSB) first. Each sampled message bit is then XORed with the bit being simultaneously shifted out of the register at the most significant end, and the result is passed to the feedback taps.
false, specifies that the contents of the register after reading the last message bit are unreflected before presentation; if equal to
true, it specifies that they are reflected, character-by-character, before presentation. For the purpose of this definition, the reflection is performed by swapping the content of each cell with that of the cell an equal distance from the opposite end of the register; the characters of the CRC are then true images of parts of the reflected register, the character containing the original MSB always appearing first.
xoroutis written in hexadecimal notation, having the same endianness as the CRC such that its true image appears in the characters of the CRC.
"123456789"(as 8-bit characters), optionally reflecting, and applying the final XOR.
refout=true), but not applying the final XOR. This is mathematically equivalent to initialising the register with the
xoroutparameter, reflecting it as described (if
refout=true), reading as many zero bits as there are cells in the register, and reflecting the result (if
refin=true). The residue of a crossed-endian model is calculated assuming that the characters of the received CRC are specially reflected before submitting the codeword.
Robert Bosch GmbH (September 1991), CAN 2.0 Specification.
Robert Bosch GmbH, E-Ray FlexRay IP Module Documentation and Application Notes.
Dipl. Inf. Johann N. Löfflmann (30 July 2006), Jacksum. CRC and hash calculator in Java.
Thomas Pircher (6 January 2016), pycrc. Python based parametrised CRC calculator and C code generator.
William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling (1992), Numerical recipes in C: The art of scientific computing. 2nd ed. Cambridge: Cambridge University Press. ISBN 0-521-43108-5
Ross N. Williams (19 August 1993), "A Painless Guide to CRC Error Detection Algorithms".
Lammert Bies (August 2011), "On-line CRC calculation and free library".
Lammert Bies, "Error detection and correction" Web forum.
Wolfgang Ehrhardt (27 March 2012), CRC / HASH utilities and plugin for FAR Manager.
Jonathan Graham Harston (21–23 June 2011), "Source Code for Calculating CRCs".
PicList MassMind, "Cyclic Redundancy Check error detection".
Sven Reifegerste (30 October 2006), Parametrised online CRC calculator.
Tom Torfs, IOCCC winning entry, 1998, CRC generator.
Every effort has been made to ensure accuracy, however there may be occasional errors or omissions. All trademarks and registered trademarks are the intellectual property of their respective owners. The code and documentation included in this document are supplied without warranty, not even the implied warranties of merchantability or fitness for a particular purpose. In no event shall the author or his suppliers be liable for any loss, damage, injury or death, of any nature and howsoever caused, arising from the use of, or failure, inability or unwillingness to use, this software or documentation.
[ Top of page ]
Map of common 16-bit CRC algorithms.
|Initial value||Final XOR|
Project web hosted by
[ Top of page ]