public class Crc8 {
private int crc = 0;public void update(final byte[] input, final int offset, final int len) { for (int i = 0; i < len; i++) { update(input[offset + i]); }}public void update(final byte[] input) { update(input, 0, input.length);}private final void update(final byte b) { crc ^= b; for (int j=0;j<8;j++){ if ((crc & 0x01) != 0) crc = (crc >> 1) ^ 0x8c; else crc = crc >> 1; }}public void update(final int b) { update((byte) b);}public int getValue() { return (crc & 0xFF);}public void reset() { crc = 0;}
// /**
// * Test// */// public static void main(String[] args) { // CRC8 crc = new CRC8();// crc.reset();// crc.update("test".getBytes());// System.out.println("181=" + crc.getValue());// crc.reset();// crc.update("hello world".getBytes());// System.out.println("59=" + crc.getValue());// }