/****************************************************************************** * Compilation:javac Crc16ccitt.java * Execution:java Crc16ccitt S * Dependencies: * * Reads in a sequence of bytes and prints out it S-bit * Cylcic redundancy Check (crc-cciit 0xFFFF). * * 1 + x + x^5 + x^12 + x^16 is irreducible polynomial. * *% java Crc16-ccitt 123456789 * Crc16-ccitt = 29b1 * **************************************************************** /public class Crc16ccitt {public static void main (string[] args) {int CRC = 0xFFFF; Initial value int polynomial = 0x1021; 0001 0000 0010 0001 (0, 5, N)//byte[] testbytes = "123456789". GetBytes ("ASCII"); byte[] bytes = Args[0].getbytes (); for (byte b:bytes) {for (int i = 0; i < 8; i++) {Boolean bit = ((b >> (7-i) & 1) = = 1); Boolean C15 = (CRC >> & 1) = = 1); CRC <<= 1; if (c15 ^ bit) CRC ^= polynomial; }} CRC &= 0xFFFF; System.out.println ("Crc16-ccitt =" + integer.tohexstring (CRC)); }}
The polynomial is 0x1021
CRC check, send-side generate check code