Функция обрабатывает не весь файл
возникла такая проблема. Мне нужно считать файл затем с с помощью функции закодировать его и раскодировать обратно. Я не понимаю почему функция обрабатывает файл не полностью.
Функция которая кодирует файл:
static List<int> ascii = new List<int>();
static List<int> Coder_Str(List<int> ascii_str)
{
int n = ascii_str.Count, N = ascii.Count, k;
List<int> code = new List<int>(ascii_str);
Console.WriteLine('\n' + "Кодировка : ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < N; j++)
{
if (ascii[j] == ascii_str[i])
{
code[i] = j;
k = ascii[j];
ascii.RemoveAt(j);
ascii.Insert(0, k);
break;
}
}
Console.Write(code[i] + " ");
}
Console.WriteLine();
ascii_str = code;
return code;
}
static List<int> Create(string s, List<int> ascii_str)
{
byte[] a = Encoding.Default.GetBytes(s);
for (int i = 0; i < 256; i++)
ascii.Add(i);
for (int i = 0; i < ascii_str.Count; i++)
{
ascii_str[i] = Convert.ToInt32(a[i]);
Console.Write(ascii_str[i] + " ");
}
return ascii_str;
}
Чтение и кодирование файла:
static void Main(string[] args)
{
string filename = "lab.txt";
string str = File.ReadAllText(filename);
// string str = "Hello world";
List<int> a_str = new List<int>(str.Length);
for (int i = 0; i < str.Length; i++)
a_str.Add(0);
//List<string> c_str = new List<string>(str.Length);
Console.WriteLine("First string no encoded: " + str);
a_str = Create(str, a_str);
a_str = Coder_Str(a_str); ;
/*string s = "";
for (int i = 0; i < str.Length; i++)
{
s += F_Two(a_str[i]);
}
Console.WriteLine("coded: " + s);
Console.WriteLine(s.Length);
a_str = Encode_F_Two(s);
Console.WriteLine(DeCoder_Str(a_str));
Console.ReadLine();
*/
string[] s = new string[100000];
for (int i = 0; i < str.Length; i++)
{
s[i] = F_Two(a_str[i]);
a_str[i] = Encode_F_Two(s[i]);
Console.WriteLine("coded: " + s[i]);
a_str[i] = Encode_F_Two(s[i]);
}
Console.WriteLine(s.Length);
Console.WriteLine(DeCoder_Str(a_str));
Console.ReadLine();
}
}
Считывание файла:
Декодирование:
Как видно из второго фото, файл почему то прочитался не полностью.

