PureBasic

Base64DecoderBuffer()

Синтаксис

Result = Base64DecoderBuffer(*InputBuffer , InputSize , *OutputBuffer , OutputSize)

Описание


Декодирует указанный буфер, закодированный алгоритмом Base64.

Параметры

*InputBuffer Входной буфер, содержащий закодированные данные.
InputSize Размер входного буфера.
*OutputBuffer Выходной буфер, куда будут помещены раскодированные данные.
OutputSize Размер выходного буфера.

Выходной буфер может быть на 33% меньше, чем входной буфер, минимальный размер 64 байта. Рекомендуется обеспечить чуть больший буфер, например на 30% меньше, чтобы избежать переполнений.

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

Возвращает длину декодированных данных в байтах.

Пример

Example$ = "Это тестовая строка!"
Decoded$ = Space(1024)
Encoded$ = Space(1024)

Debug Base64EncoderBuffer(@Example$, StringByteLength(Example$), @Encoded$, StringByteLength(Encoded$))
Debug Encoded$

Debug Base64DecoderBuffer(@Encoded$, StringByteLength(Encoded$), @Decoded$, StringByteLength(Decoded$))
Debug Decoded$

Пример: Кодирование и Декодирование из DataSection

DataSection
    ?? Test:
    ?? Data.a $00, $01, $02, $03, $04, $05, $06, $07
    ?? Data.a $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
    ?? TestEnd:
EndDataSection

Size = (?TestEnd - ?Test) * 1.35
If Size < 64
    ?? Size = 64
EndIf

*EncodeBuffer = AllocateMemory(Size)
Size = Base64EncoderBuffer(?Test, ?TestEnd - ?Test, *EncodeBuffer, MemorySize(*EncodeBuffer))
Encoded$ = PeekS(*EncodeBuffer, Size, #PB_Ascii)
Debug Encoded$

*DecodeBuffer = AllocateMemory(Size)
Size = PokeS(*EncodeBuffer, Encoded$, StringByteLength(Encoded$, #PB_Ascii), #PB_Ascii|#PB_String_NoZero)
Size = Base64DecoderBuffer(*EncodeBuffer, Size, *DecodeBuffer, MemorySize(*DecodeBuffer))
ShowMemoryViewer(*DecodeBuffer, Size)

См. также

Base64EncoderBuffer()

Поддерживаемые OS

Все

<- Base64Decoder() - Оглавление Cipher - Base64Encoder()->