private ulong CreateTableEntry(int index) { ulong r = (ulong)index; if (Parameters.RefIn) { r = CrcHelper.ReverseBits(r, HashSize); } else if (HashSize > 8) { r <<= (HashSize - 8); } ulong lastBit = (1ul << (HashSize - 1)); for (int 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; }