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());// }