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 withArgumentError: 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:
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding |
|---|---|---|---|---|---|---|---|
| 0 | A | 17 | R | 34 | i | 51 | z |
| 1 | B | 18 | S | 35 | j | 52 | 0 |
| 2 | C | 19 | T | 36 | k | 53 | 1 |
| 3 | D | 20 | U | 37 | l | 54 | 2 |
| 4 | E | 21 | V | 38 | m | 55 | 3 |
| 5 | F | 22 | W | 39 | n | 56 | 4 |
| 6 | G | 23 | X | 40 | o | 57 | 5 |
| 7 | H | 24 | Y | 41 | p | 58 | 6 |
| 8 | I | 25 | Z | 42 | q | 59 | 7 |
| 9 | J | 26 | a | 43 | r | 60 | 8 |
| 10 | K | 27 | b | 44 | s | 61 | 9 |
| 11 | L | 28 | c | 45 | t | 62 | + |
| 12 | M | 29 | d | 46 | u | 63 | / |
| 13 | N | 30 | e | 47 | v | padding | = |
| 14 | O | 31 | f | 48 | w | ||
| 15 | P | 32 | g | 49 | x | ||
| 16 | Q | 33 | h | 50 | y |
Encoding
Base64.Base64EncodePipe — Type
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.base64encode — Function
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.stringmime — Function
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.Base64DecodePipe — Type
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.base64decode — Function
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!"