Base 64 (OMFFBASE64)

Base 64 is used to encode binary data for applications that only accept text. It is commonly used in Internet Mail applications to send and receive binary data.

This library contains one OmniMark string source function and one OmniMark string sink function implementation, as follows:

  • reader is a string source function that reads a value string source, its argument, and returns the binary data of that file converted from a Base 64 encoding to raw binary octets. That is, the provided source is in Base 64, but the program sees binary data.

Any input data not recognized as part of a Base 64 encoding is ignored, so this library should not be used to validate Base 64 encoding.

  • writer is a string sink function that accepts raw binary data and writes that data to a value string sink, its first argument, converted from binary data to a Base 64 encoding. That is, the program writes binary data, but the provided output receives Base 64.

writer has an optional first argument, heralded by width, that is the line width of the Base 64 output. The default is 76, in keeping with the specification for Base 64 encoding. The Base 64 output has line breaks, represented by a carriage-return/line-feed (CR+LF) sequence after the number of characters (of the Base 64 encoding) specified in the optional first argument. The Base 64 output always has a CR+LF at its end.

The optional first argument of writer can alternatively have a value of zero (0), in which case no CR+LF sequences are produced, and the output consists entirely of encoded data.

The Base 64 encoding used is based on that described in IETF RFC 2045, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies".

Usage Note

To use omffbase64, you must import it into your program using a statement like this:

  import "omffbase64.xmd" prefixed by base64.

(Please see the import topic for more on importing.)