01-09-2016, 11:01 PM
I'm writing my own editors =)
That's why I asked this question
Hope, this bytes (C1 D8 FF FF) aren't so important

Here's a bit of code, if someone needs: (author [member=filix_93] )
namespace Checksum
{
using System;
using System.Diagnostics;
using System.IO;
public static class DoWork
{
public static int CalculateSum(string filepath, int size)
{
int num = 0;
BinaryReader reader = new BinaryReader(File.Open(filepath, FileMode.Open));
try
{
for (int i = 0; i < size; i += 20)
{
reader.BaseStream.Seek((long) i, SeekOrigin.Begin);
num += reader.ReadInt32();
}
reader.Close();
}
catch (Exception exception)
{
Debug.WriteLine(exception);
throw exception;
}
finally
{
if (reader != null)
{
reader.Dispose();
}
}
return num;
}
public static bool CheckSumExist(string filepath)
{
return (GetCurrentSum(filepath) == CalculateSum(filepath, GetFileSize(filepath)));
}
public static bool EncodeFile(string filepath)
{
try
{
BinaryWriter writer;
int num;
Exception exception;
if (!CheckSumExist(filepath))
{
num = CalculateSum(filepath, GetFileSize(filepath));
writer = new BinaryWriter(File.OpenWrite(filepath));
try
{
writer.BaseStream.Seek(0L, SeekOrigin.End);
writer.Write(num);
writer.Close();
}
catch (Exception exception1)
{
exception = exception1;
Debug.WriteLine(exception);
throw exception;
}
finally
{
if (writer != null)
{
writer.Dispose();
}
}
return true;
}
num = CalculateSum(filepath, GetFileSize(filepath));
writer = new BinaryWriter(File.OpenWrite(filepath));
try
{
writer.BaseStream.Seek(-4L, SeekOrigin.End);
writer.Write(num);
writer.Close();
}
catch (Exception exception2)
{
exception = exception2;
Debug.WriteLine(exception);
throw exception;
}
finally
{
if (writer != null)
{
writer.Dispose();
}
}
return true;
}
catch
{
return false;
}
}
public static int GetCurrentSum(string filepath)
{
int num = 0;
BinaryReader reader = new BinaryReader(File.Open(filepath, FileMode.Open));
try
{
reader.BaseStream.Seek(-4L, SeekOrigin.End);
num = reader.ReadInt32();
reader.Close();
}
catch (Exception exception)
{
Debug.WriteLine(exception);
throw exception;
}
finally
{
if (reader != null)
{
reader.Dispose();
}
}
return num;
}
public static int GetFileSize(string filepath)
{
return Convert.ToInt32(new FileInfo(filepath).Length);
}
}
}
Solved.

