Блоковая запись в файл битов - C#

Узнай цену своей работы

Формулировка задачи:

Привет! Помогите, пожалуйста, переделать немного код. Нужно чтобы рандомные числа и запись в файл происходила блоками, а не побайтно. Знаю, что есть функции NextBytes и .Write, но не могу понять как их применить. (13 и 18 строки)
Листинг программы
  1. // Создаем экземпляр класса Random для генерации псевдослучайных чисел.
  2. var rand = new Random();
  3. // Цикл перезаписи файла.
  4. for (int i = 0; i < 7; i++)
  5. {
  6. byte mask = 0;
  7. // В соответствии с алгоритмом маска на первой итерации == #FF, на второй == #00,
  8. // в пяти следующий псевдослучайному числу.
  9. if (i == 0) mask = 0xFF;
  10. else if (i == 1) mask = 0x00;
  11. else mask = rand.NextBytes(0, 255);
  12. while (streamWriter.Position < streamWriter.Length)
  13. {
  14. // Пишем в поток по-байтно соответственно итерации цикла битовую маску.
  15. streamWriter.WriteByte(mask);
  16. }

Решение задачи: «Блоковая запись в файл битов»

textual
Листинг программы
  1. // System.IO.FileStream
  2. /// <summary>Запись байта в текущую позицию в потоке файла.</summary>
  3. /// <param name="value">Байт, который необходимо записать в поток. </param>
  4. /// <exception cref="T:System.ObjectDisposedException">Поток закрыт. </exception>
  5. /// <exception cref="T:System.NotSupportedException">Этот поток не поддерживает запись. </exception>
  6. /// <filterpriority>1</filterpriority>
  7. [SecuritySafeCritical]
  8. public override void WriteByte(byte value)
  9. {
  10.     if (this._handle.IsClosed)
  11.     {
  12.         __Error.FileNotOpen();
  13.     }
  14.     if (this._writePos == 0)
  15.     {
  16.         if (!this.CanWrite)
  17.         {
  18.             __Error.WriteNotSupported();
  19.         }
  20.         if (this._readPos < this._readLen)
  21.         {
  22.             this.FlushRead();
  23.         }
  24.         this._readPos = 0;
  25.         this._readLen = 0;
  26.         if (this._buffer == null)
  27.         {
  28.             this._buffer = new byte[this._bufferSize];
  29.         }
  30.     }
  31.     if (this._writePos == this._bufferSize)
  32.     {
  33.         this.FlushWrite(false);
  34.     }
  35.     this._buffer[this._writePos] = value;
  36.     this._writePos++;
  37. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут