java CRC8

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

你可能感兴趣的:(java,crc32)