Поделиться через


ToBase64Transform.TransformBlock(Byte[], Int32, Int32, Byte[], Int32) Метод

Определение

Преобразует заданную область входного массива байтов в кодировку base64 и копирует результат в заданную область выходного массива байтов.

public:
 virtual int TransformBlock(cli::array <System::Byte> ^ inputBuffer, int inputOffset, int inputCount, cli::array <System::Byte> ^ outputBuffer, int outputOffset);
public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset);
abstract member TransformBlock : byte[] * int * int * byte[] * int -> int
override this.TransformBlock : byte[] * int * int * byte[] * int -> int
Public Function TransformBlock (inputBuffer As Byte(), inputOffset As Integer, inputCount As Integer, outputBuffer As Byte(), outputOffset As Integer) As Integer

Параметры

inputBuffer
Byte[]

Входные данные, подлежащие преобразованию в кодировку base64.

inputOffset
Int32

Смещение во входном массиве байтов, начиная с которого следует использовать данные.

inputCount
Int32

Число байтов во входном массиве для использования в качестве данных.

outputBuffer
Byte[]

Выходной массив, в который записывается результат.

outputOffset
Int32

Смещение в выходном массиве байтов, начиная с которого следует записывать данные.

Возвращаемое значение

Количество записанных байт.

Реализации

Исключения

Текущий объект ToBase64Transform уже был удален.

Недопустимый размер данных.

Для параметра inputBuffer задано недопустимое значение смещения.

-или-

Недопустимое значение параметра inputCount.

Параметр inputBuffer имеет значение null.

Значение параметра inputBuffer не должно быть отрицательным.

Примеры

В следующем примере кода показано, как вызвать TransformBlock метод для итерации путем inputBytes преобразования с помощью blockSize. Этот пример входит в состав более крупного примера использования класса ToBase64Transform.

int inputBlockSize = base64Transform->InputBlockSize;
while ( inputBytes->Length - inputOffset > inputBlockSize )
{
   base64Transform->TransformBlock(
      inputBytes,
      inputOffset,
      inputBytes->Length - inputOffset,
      outputBytes,
      0 );

   inputOffset += base64Transform->InputBlockSize;
   outputFileStream->Write(
      outputBytes,
      0,
      base64Transform->OutputBlockSize );
}
int inputBlockSize = base64Transform.InputBlockSize;

while(inputBytes.Length - inputOffset > inputBlockSize)
{
    base64Transform.TransformBlock(
        inputBytes,
        inputOffset,
        inputBytes.Length - inputOffset,
        outputBytes,
        0);

    inputOffset += base64Transform.InputBlockSize;
    outputFileStream.Write(
        outputBytes, 
        0, 
        base64Transform.OutputBlockSize);
}
Dim inputBlockSize As Integer = base64Transform.InputBlockSize

While (inputBytes.Length - inputOffset > inputBlockSize)
    base64Transform.TransformBlock( _
        inputBytes, _
        inputOffset, _
        inputBytes.Length - inputOffset, _
        outputBytes, _
        0)

    inputOffset += base64Transform.InputBlockSize
    outputFileStream.Write(outputBytes, _
        0, _
        base64Transform.OutputBlockSize)
End While

Комментарии

Класс ToBase64Transform — это блочный алгоритм, который обрабатывает входные блоки по 3 байта и создает выходные блоки по 4 байта. Метод TransformBlock преобразует входной блок из 24 битов в 32 бита символьных данных. Чтобы соответствовать преобразованию блока, необходимо сохранить границы ввода 3 байта до 4-байтовых границ выходных данных.

Применяется к

См. также раздел