package com.liveramp.hank.storage.cueball;
public final class HashPrefixCalculator {
private final int numBits;
public HashPrefixCalculator(int numBits) {
this.numBits = numBits;
}
public final int getHashPrefix(final byte[] chunkBytes, int off) {
final int bitsFromLastByte = numBits % 8;
final int numFullBytes = off + (numBits / 8);
int prefix = 0;
for (; off < numFullBytes; off++) {
prefix = (prefix << 8) | (chunkBytes[off] & 0xff);
}
if (bitsFromLastByte == 0) {
return prefix;
} else {
return (prefix << bitsFromLastByte) | (((chunkBytes[off] & 0xff) >> (8 - bitsFromLastByte)));
}
}
}