private ulong CreateTableEntry(int index) { var r = (ulong)index; if (Parameters.RefIn) { r = CrcHelper.ReverseBits(r, HashSize); } else if (HashSize > 8) { r <<= HashSize - 8; } var lastBit = 1ul << (HashSize - 1); for (var i = 0; i < 8; i++) { if ((r & lastBit) != 0) { r = (r << 1) ^ Parameters.Poly; } else { r <<= 1; } } if (Parameters.RefIn) { r = CrcHelper.ReverseBits(r, HashSize); } return(r & _mask); }
public override void Initialize() { _currentValue = Parameters.RefOut ? CrcHelper.ReverseBits(Parameters.Init, HashSize) : Parameters.Init; }