示例#1
0
文件: Crc.cs 项目: limxc/Limxc.Tools
        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);
        }
示例#2
0
文件: Crc.cs 项目: limxc/Limxc.Tools
 public override void Initialize()
 {
     _currentValue = Parameters.RefOut ? CrcHelper.ReverseBits(Parameters.Init, HashSize) : Parameters.Init;
 }