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

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

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

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

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

textual
Листинг программы
// System.IO.FileStream
/// <summary>Запись байта в текущую позицию в потоке файла.</summary>
/// <param name="value">Байт, который необходимо записать в поток. </param>
/// <exception cref="T:System.ObjectDisposedException">Поток закрыт. </exception>
/// <exception cref="T:System.NotSupportedException">Этот поток не поддерживает запись. </exception>
/// <filterpriority>1</filterpriority>
[SecuritySafeCritical]
public override void WriteByte(byte value)
{
    if (this._handle.IsClosed)
    {
        __Error.FileNotOpen();
    }
    if (this._writePos == 0)
    {
        if (!this.CanWrite)
        {
            __Error.WriteNotSupported();
        }
        if (this._readPos < this._readLen)
        {
            this.FlushRead();
        }
        this._readPos = 0;
        this._readLen = 0;
        if (this._buffer == null)
        {
            this._buffer = new byte[this._bufferSize];
        }
    }
    if (this._writePos == this._bufferSize)
    {
        this.FlushWrite(false);
    }
    this._buffer[this._writePos] = value;
    this._writePos++;
}

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


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

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

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