Exemplo n.º 1
0
        static CRC32C()
        {
#if NETCOREAPP3_0_OR_GREATER || NETCOREAPP3_1 || NET5_0
            if (Sse42.IsSupported)
            {
                return;
            }
#endif
#if NET5_0_OR_GREATER || NET5_0
            if (Crc32.IsSupported)
            {
                return;
            }
#endif
            Table = NetUtils.AllocatePinnedUninitializedArray <uint>(16 * 256);
            for (uint i = 0; i < 256; i++)
            {
                uint res = i;
                for (int t = 0; t < 16; t++)
                {
                    for (int k = 0; k < 8; k++)
                    {
                        res = (res & 1) == 1 ? Poly ^ (res >> 1) : (res >> 1);
                    }
                    Table[t * 256 + i] = res;
                }
            }
        }