SevenZip.CRC Maven / Gradle / Ivy
The newest version!
/**
* Copyright (c) 2016-2022 Deephaven Data Labs and Patent Pending
*/
// SevenZip/CRC.java
package SevenZip;
public class CRC {
static public int[] Table = new int[256];
static {
for (int i = 0; i < 256; i++) {
int r = i;
for (int j = 0; j < 8; j++)
if ((r & 1) != 0)
r = (r >>> 1) ^ 0xEDB88320;
else
r >>>= 1;
Table[i] = r;
}
}
int _value = -1;
public void Init() {
_value = -1;
}
public void Update(byte[] data, int offset, int size) {
for (int i = 0; i < size; i++)
_value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8);
}
public void Update(byte[] data) {
int size = data.length;
for (int i = 0; i < size; i++)
_value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8);
}
public void UpdateByte(int b) {
_value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8);
}
public int GetDigest() {
return _value ^ (-1);
}
}