Создание Windows-приложений на основе Visual C#


           

Класс FromQuotedPrintableTransform.cs


using System; using System.Security.Cryptography; using System.Text;

namespace Mail { /// <summary> /// Конвертирование CryptoStream. /// <summary> public class FromQuotedPrintableTransform : ICryptoTransform, IDisposable { // максимальный размер входного\выходного блока. const int MAX_BUF = 3;

// буфер byte [] _buf = null;

/// <summary> /// Значение, указывающее на возможность повторного использования текущей трансформации /// </summary> public bool CanReuseTransform { get { return true; } }

/// <summary> /// Значение, указывающее на возможность трансформации составных блоков. /// </summary> public bool CanTransformMultipleBlocks { get { return false; } }

/// <summary> /// Возвращение выходного размера блока. /// </summary> public int OutputBlockSize { get { return MAX_BUF; } }

/// <summary> /// Возвращение входного размера блока. /// </summary> public int InputBlockSize { get { return MAX_BUF; } }

/// <summary> /// Удаление всех элементов. /// </summary> public void Dispose() { _buf = null; GC.SuppressFinalize(this); }

/// <summary> /// Конвертирование указанного участка входящего массива байтов из quoted-printable (RFC 2045 (6.7)) /// и копирование результата в указанный участок выходного массива байтов. /// </summary> /// <param name="inputBuffer">Входящий массив байтов.</param> /// <param name="inputOffset">Начальная отметка участка, который нужно конвертировать.</param> /// <param name="inputCount">Количество байтов после индекса начала участка.</param> /// <param name="outputBuffer">Выходной массив байтов, в который требуется записать результат.</param> /// <param name="outputOffset">Начальная отметка участка, после которого необходимо вписать результат.</param> /// <returns>Количество вписанных байтов.</returns> public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) { // append unparsed characters if (_buf != null) { byte [] tmp = new byte[inputCount + _buf.Length]; Array.Copy(_buf, 0, tmp, 0, _buf.Length); Array.Copy(inputBuffer, inputOffset, tmp, _buf.Length, inputCount); inputBuffer = tmp;



Содержание  Назад  Вперед