Advertisement
Guest User

Untitled

a guest
Feb 13th, 2022
1,260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace CksCalc
  8. {
  9. //------------ crc32----------------------------------
  10. class CRC32
  11. {
  12.  
  13. public UInt32 Calculate(byte[] Value, UInt32 ini)
  14. {
  15. UInt32[] CRCTable = new UInt32[256];
  16. for (int i = 0; i < 256; i++)
  17. {
  18. UInt32 entry = (UInt32)i;
  19. for (int j = 0; j < 8; j++) //prepare to rotate 8bits
  20. if ((entry & 1) == 1)
  21. entry = (entry >> 1) ^ 0xEDB88320; //rotate and xor with polynomic 0xEDB88320
  22. else
  23. entry = entry >> 1; //rotate entry
  24. CRCTable[i] = entry;
  25. }
  26.  
  27. UInt32 CRCVal = ini;
  28. for (int i = 0; i < Value.Length; i++)
  29. {
  30. CRCVal = (CRCVal >> 8) ^ CRCTable[(CRCVal & 0xff) ^ Value[i]];
  31. Console.WriteLine("CRCVal : " + i + " " + CRCTable[(CRCVal & 0xff) ^ Value[i]].ToString("X2") + " " + CRCVal + " " + CRCVal.ToString("X2"));
  32. }
  33. CRCVal ^= 0xFFFFFFFF; // NOT
  34. UInt32 Result = CRCVal;
  35.  
  36. Console.WriteLine("CRC32 Decimal: " + Result);
  37. Console.WriteLine("CRC32 Hex: " + Result.ToString("X2"));
  38. return Result;
  39. }
  40.  
  41.  
  42. }//------------ crc32- end---------------------------------
  43. }
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement