initial commit
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
namespace Crysome.Common.Network.FileTransfer;
|
||||
|
||||
internal static class Crc32
|
||||
{
|
||||
private static readonly uint[] _table = Build();
|
||||
|
||||
private static uint[] Build()
|
||||
{
|
||||
uint[] array = new uint[256];
|
||||
for (uint num = 0u; num < 256; num++)
|
||||
{
|
||||
uint num2 = num;
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
num2 = (((num2 & 1) != 0) ? (0xEDB88320u ^ (num2 >> 1)) : (num2 >> 1));
|
||||
}
|
||||
array[num] = num2;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
internal static uint Compute(byte[] data, int offset, int len)
|
||||
{
|
||||
uint num = uint.MaxValue;
|
||||
int num2 = offset + len;
|
||||
for (int i = offset; i < num2; i++)
|
||||
{
|
||||
num = (num >> 8) ^ _table[(num ^ data[i]) & 0xFF];
|
||||
}
|
||||
return num ^ 0xFFFFFFFFu;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user