Блоковая запись в файл битов - 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++;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д