Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
std.base64
Encoding / Decoding Base64 format. Implemented according to RFC 4648 - The Base16. Example:ubyte[] data = [0x14, 0xfb, 0x9c, 0x03, 0xd9, 0x7e]; const(char)[] encoded = Base64.encode(data); assert(encoded == "FPucA9l+"); ubyte[] decoded = Base64.decode("FPucA9l+"); assert(decoded == [0x14, 0xfb, 0x9c, 0x03, 0xd9, 0x7e]);
Standard input
Command line arguments
Application output
// Create MIME Base64 with CRLF, per line 76. File f = File("./text.txt", "r"); scope(exit) f.close(); Appender!string mime64 = appender!string; foreach (encoded; Base64.encoder(f.byChunk(57))) { mime64.put(encoded); mime64.put("\r\n"); } writeln(mime64.data);
Standard input
Command line arguments
Application output
Boost License 1.0. Authors:
Masahiro Nakagawa, Daniel Murphy (Single value Encoder and Decoder) Source:
std/base64.d
- alias Base64Impl!('+', '/') Base64;
- The Base64
- alias Base64Impl!('-', '_') Base64URL;
- The "URL and Filename safe" Base64
- template Base64Impl(char Map62th, char Map63th, char Padding = '=')
- Core implementation for Base64 format.
Example:
alias Base64Impl!('+', '/') Base64; // The Base64 format(Already defined). alias Base64Impl!('!', '=', Base64.NoPadding) Base64Re; // non-standard Base64 format for Regular expression
NOTE:
encoded-string doesn't have padding character if set Padding parameter to NoPadding.- size_t encodeLength(in size_t sourceLength);
- Calculates the minimum length for encoding.
Parameters:
Returns:size_t sourceLength the length of source array.
the calculated length using sourceLength. - char[] encode(R1, R2)(in R1 source, R2 buffer);
char[] encode(R1, R2)(R1 source, R2 buffer); - Encodes source into buffer.
Parameters:
Returns:source an InputRange to encode. range a buffer to store encoded result.
the encoded string that slices buffer. - size_t encode(R1, R2)(in R1 source, R2 range);
size_t encode(R1, R2)(R1 source, R2 range); - Encodes source into range.
Parameters:
Returns:source an InputRange to encode. range an OutputRange to put encoded result.
the number of calling put. - char[] encode(Range)(Range source);
char[] encode(Range)(Range source); - Encodes source to new buffer. Shortcut to encode(source, buffer) function.
- struct Encoder(Range) if (isInputRange!(Range) && (is(ElementType!(Range) : const(ubyte)[]) || is(ElementType!(Range) : const(char)[])));
- Range that encodes chunk data at a time.
- const bool empty();
- Range primitive operation that checks iteration state.
Returns:
true if there are no more elements to be iterated. - char[] front();
- Range primitive operation that returns the currently iterated element.
Returns:
the encoded string. - void popFront();
- Range primitive operation that advances the range to its next element.
Throws:
an Exception when you try to call popFront on empty range. - typeof(this) save();
- Captures a Range state.
Returns:
a copy of this.
- struct Encoder(Range) if (isInputRange!(Range) && is(ElementType!(Range) : ubyte));
- Range that encodes single character at a time.
- const bool empty();
- Range primitive operation that checks iteration state.
Returns:
true if there are no more elements to be iterated. - ubyte front();
- Range primitive operation that returns the currently iterated element.
Returns:
the encoded character. - void popFront();
- Range primitive operation that advances the range to its next element.
Throws:
an Exception when you try to call popFront on empty range. - typeof(this) save();
- Captures a Range state.
Returns:
a copy of this.
- Encoder!(Range) encoder(Range)(Range range);
- Iterates through an InputRange at a time by using Encoder.
Default Encoder encodes chunk data.
Example:
File f = File("text.txt", "r"); scope(exit) f.close(); uint line = 0; foreach (encoded; Base64.encoder(f.byLine())) { writeln(++line, ". ", encoded); }
Standard inputCommand line argumentsApplication output
ubyte[] data = cast(ubyte[]) "0123456789"; // The ElementType of data is not aggregation type foreach (encoded; Base64.encoder(data)) { writeln(encoded); }
Standard inputCommand line argumentsApplication output
Returns:range an InputRange to iterate.
a Encoder object instantiated and initialized according to the arguments. - size_t decodeLength(in size_t sourceLength);
- Calculates the minimum length for decoding.
Parameters:
Returns:size_t sourceLength the length of source array.
calculated length using sourceLength. - ubyte[] decode(R1, R2)(in R1 source, R2 buffer);
ubyte[] decode(R1, R2)(R1 source, R2 buffer); - Decodes source into buffer.
Parameters:
Returns:source an InputRange to decode. buffer a buffer to store decoded result.
the decoded string that slices buffer. Throws:
an Exception if source has character outside base-alphabet. - size_t decode(R1, R2)(in R1 source, R2 range);
size_t decode(R1, R2)(R1 source, R2 range); - Decodes source into range.
Parameters:
Returns:source an InputRange to decode. range an OutputRange to put decoded result
the number of calling put. Throws:
an Exception if source has character outside base-alphabet. - ubyte[] decode(Range)(Range source);
ubyte[] decode(Range)(Range source); - Decodes source into new buffer. Shortcut to decode(source, buffer) function.
- struct Decoder(Range) if (isInputRange!(Range) && (is(ElementType!(Range) : const(char)[]) || is(ElementType!(Range) : const(ubyte)[])));
- Range that decodes chunk data at a time.
- const bool empty();
- Range primitive operation that checks iteration state.
Returns:
true if there are no more elements to be iterated. - ubyte[] front();
- Range primitive operation that returns the currently iterated element.
Returns:
the decoded result. - void popFront();
- Range primitive operation that advances the range to its next element.
Throws:
an Exception when you try to call popFront on empty range. - typeof(this) save();
- Captures a Range state.
Returns:
a copy of this.
- struct Decoder(Range) if (isInputRange!(Range) && is(ElementType!(Range) : char));
- Range that decodes single character at a time.
- const bool empty();
- Range primitive operation that checks iteration state.
Returns:
true if there are no more elements to be iterated. - ubyte front();
- Range primitive operation that returns the currently iterated element.
Returns:
the decoded result. - void popFront();
- Range primitive operation that advances the range to its next element.
Throws:
an Exception when you try to call popFront on empty range. - typeof(this) save();
- Captures a Range state.
Returns:
a copy of this.
- Decoder!(Range) decoder(Range)(Range range);
- Iterates through an InputRange at a time by using Decoder.
Default Decoder decodes chunk data.
Example:
foreach (decoded; Base64.decoder(stdin.byLine())) { writeln(decoded); }
Standard inputCommand line argumentsApplication output
auto encoded = Base64.encoder(cast(ubyte[])"0123456789"); foreach (n; map!q{a - '0'}(Base64.decoder(encoded))) { writeln(n); }
Standard inputCommand line argumentsApplication output
If you use ByChunk, chunk-size should be the multiple of 4. Decoder can't judge a encode-boundary. Parameters:
Returns:range an InputRange to iterate.
a Decoder object instantiated and initialized according to the arguments.