Piszę mały program związany z entropią różnych fragmentów pliku.
Chciałem podzielić wczytywany plik na 128 kawałków, a potem oddzielnie policzyć entropie dla każdego z nich. Przy wykonywaniu funkcji wyrzucany jest jednak wyjątek: 'System.ArgumentOutOfRangeException" związany jak już powiedziałem z "przepełnieniem" tablicy. Tylko dlaczego?
public static double[] EntSectors = new double[128];
public static void EntropyPoints()
{
FileInfo f = new FileInfo(path);
long temp1 = 0; long sizeinbytes = f.Length;
long sizeofpart = sizeinbytes / 128;
byte[] b = File.ReadAllBytes(path);
string s = null;
foreach (byte bb in b)
{
string a = bb.ToString();
s += a;
}
long sizeX2 = 2 * sizeinbytes; long temp2 = sizeX2 / 128;
for (int i = 0; i < 128; i++)
{
string temp3 = s.Substring((int)temp1, (int)temp2);
EntSectors[i] = EntropySh(temp3);
temp1 = temp2 + 1;
temp2 += temp2;
}
}
Dodatkowo dostaję informację: Additional information: Indeks i długość muszą odwoływać się do lokalizacji w ciągu.