Base64

The Base64 standard library implements encoding and decoding of the base64 format following the RFC 4648 standard, with the following important notes:

  • Non-alphabet characters are ignored when decoding (see section 3.3 of RFC 4648).
  • When decoding, if the data has padding outside of its specified location in the last 0-2 characters of the last group of four alphabet characters (e.g. "A===", "AAAA=", "A=AA"), the data is rejected with ArgumentError: malformed base64 sequence.
  • Padding is optional when decoding ("AA" and "AA==" are equally valid), and is always inserted when encoding.

The following alphabet is used:

ValueEncodingValueEncodingValueEncodingValueEncoding
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47vpadding=
14O31f48w
15P32g49x
16Q33h50y

Encoding

Base64.Base64EncodePipeType
Base64EncodePipe(ostream)

Return a new write-only I/O stream, which converts any bytes written to it into base64-encoded ASCII bytes written to ostream. Calling close on the Base64EncodePipe stream is necessary to complete the encoding (but does not close ostream).

Examples

julia> io = IOBuffer();

julia> iob64_encode = Base64EncodePipe(io);

julia> write(iob64_encode, "Hello!")
6

julia> close(iob64_encode);

julia> str = takestring!(io)
"SGVsbG8h"

julia> String(base64decode(str))
"Hello!"
Base64.base64encodeFunction
base64encode(writefunc, args...; context=nothing)
base64encode(args...; context=nothing)

Given a write-like function writefunc, which takes an I/O stream as its first argument, base64encode(writefunc, args...) calls writefunc to write args... to a base64-encoded string, and returns the string. base64encode(args...) is equivalent to base64encode(write, args...): it converts its arguments into bytes using the standard write functions and returns the base64-encoded string.

The optional keyword argument context can be set to :key=>value pair or an IO or IOContext object whose attributes are used for the I/O stream passed to writefunc or write.

See also base64decode.

Base64.stringmimeFunction
stringmime(mime, x; context=nothing)

Return an AbstractString containing the representation of x in the requested mime type. This is similar to repr(mime, x) except that binary data is base64-encoded as an ASCII string.

The optional keyword argument context can be set to :key=>value pair or an IO or IOContext object whose attributes are used for the I/O stream passed to show.

Decoding

Base64.Base64DecodePipeType
Base64DecodePipe(istream)

Return a new read-only I/O stream, which decodes base64-encoded data read from istream.

Examples

julia> io = IOBuffer();

julia> iob64_decode = Base64DecodePipe(io);

julia> write(io, "SGVsbG8h")
8

julia> seekstart(io);

julia> String(read(iob64_decode))
"Hello!"
Base64.base64decodeFunction
base64decode(string)

Decode the base64-encoded string and returns a Vector{UInt8} of the decoded bytes.

See also base64encode.

Examples

julia> b = base64decode("SGVsbG8h")
6-element Vector{UInt8}:
 0x48
 0x65
 0x6c
 0x6c
 0x6f
 0x21

julia> String(b)
"Hello!"