Файл или массив большого размера вывести на экран через буфер маленького размера - C#
Формулировка задачи:
Приветствую!
Суть: нужно продеть слона int[] slon длиной 13467 через игольное ушко byte[] uho = new byte[1024], чтобы часть слона, прошедшая через uho[] была, выведена на экран, например.
Я накидал такой вариант:
Как можно оптимизировать? Изменить?
Предлагайте иные реализации :-)
Главное - слон должен быть большой (вплоть до 200 Мб), толстый, и размер не кратный 2, ухо должно быть не более 8192, и слон должен быть собран весь до последнего байта, ничего не должно потеряться.
Для тех, кто хорошо разбирается в языке, можно попутно разобрать слона int->byte->char || string и обратно (опционально).
Вопрос про производительность открытый.
Листинг программы
- byte[] buffer = new byte[1024]; // игольное ушко
- string mystring ="";
- long a = (mynextByte.Length / buffer.Length) + 1; // кол-во итераций
- int n = 0;
- string[] lines = new string[buffer.Length];
- do
- {
- int k = 0;
- do
- {
- if ((n + k) >= mynextByte.Length) break;
- lines[k] = mynextByte[n+k].ToString();
- mystring += lines[k].ToString();
- k++; // внутренний счетчик
- n++; // внешний счетчик
- }
- while (k < buffer.Length);
- a--;
- } while (a > 0);
Решение задачи: «Файл или массив большого размера вывести на экран через буфер маленького размера»
textual
Листинг программы
- static void Main(string[] args)
- {
- var fileStream = new FileStream("огромный файл :)", FileMode.Open);
- using (var bufferedStream = new BufferedStream(fileStream))
- {
- int value;
- while ((value = bufferedStream.ReadByte()) != -1)
- {
- Console.Write(value);
- }
- }
- Console.ReadKey();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д