Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace CksCalc
- {
- //------------ crc32----------------------------------
- class CRC32
- {
- public UInt32 Calculate(byte[] Value, UInt32 ini)
- {
- UInt32[] CRCTable = new UInt32[256];
- for (int i = 0; i < 256; i++)
- {
- UInt32 entry = (UInt32)i;
- for (int j = 0; j < 8; j++) //prepare to rotate 8bits
- if ((entry & 1) == 1)
- entry = (entry >> 1) ^ 0xEDB88320; //rotate and xor with polynomic 0xEDB88320
- else
- entry = entry >> 1; //rotate entry
- CRCTable[i] = entry;
- }
- UInt32 CRCVal = ini;
- for (int i = 0; i < Value.Length; i++)
- {
- CRCVal = (CRCVal >> 8) ^ CRCTable[(CRCVal & 0xff) ^ Value[i]];
- Console.WriteLine("CRCVal : " + i + " " + CRCTable[(CRCVal & 0xff) ^ Value[i]].ToString("X2") + " " + CRCVal + " " + CRCVal.ToString("X2"));
- }
- CRCVal ^= 0xFFFFFFFF; // NOT
- UInt32 Result = CRCVal;
- Console.WriteLine("CRC32 Decimal: " + Result);
- Console.WriteLine("CRC32 Hex: " + Result.ToString("X2"));
- return Result;
- }
- }//------------ crc32- end---------------------------------
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement