public uint ComputeCheckSum(byte[] bytes, CSMethod eMethod) { uint uiSummerValue = 0; bool StopReading = false; dlgSummer dlgSummer; switch (eMethod) { case CSMethod.CRC32: dlgSummer = new dlgSummer(SummerCRC32Logic); uiSummerValue = 0xffffffff; break; case CSMethod.Checksum: dlgSummer = new dlgSummer(SummerCSLogic); break; default: dlgSummer = new dlgSummer(SummerCSLogic); break; } uiSummerValue = dlgSummer(bytes.Length, uiSummerValue, bytes); if (eMethod == CSMethod.CRC32) { uiSummerValue = ~uiSummerValue; } return(uiSummerValue); }
public uint ComputeCheckSum(FileInfo file, CSMethod eCsMethod) { uint uiSummerValue = 0; bool StopReading = false; dlgSummer dlgSummer; switch (eCsMethod) { case CSMethod.CRC32: dlgSummer = new dlgSummer(SummerCRC32Logic); uiSummerValue = 0xffffffff; break; case CSMethod.Checksum: dlgSummer = new dlgSummer(SummerCSLogic); break; default: dlgSummer = new dlgSummer(SummerCSLogic); break; } using (FileStream fs = new FileStream(file.FullName, FileMode.Open)) using (BinaryReader br = new BinaryReader(fs)) { long TotalLength = Math.Min((long)BufferSize, fs.Length); while (!StopReading) { byte[] by1FileChunk = new byte[TotalLength]; br.Read(by1FileChunk, 0, (int)TotalLength); uiSummerValue = dlgSummer(TotalLength, uiSummerValue, by1FileChunk); if (br.BaseStream.Position >= br.BaseStream.Length) { StopReading = true; } } } if (eCsMethod == CSMethod.CRC32) { uiSummerValue = ~uiSummerValue; } return(uiSummerValue); }