# Module Netencoding.Base64

    module Base64: sig .. end

Base64 encoding as described in RFC 2045

    val encode : ?pos:int ->
           ?len:int ->
           ?linelength:int ->
           ?crlf:bool -> ?plus:char -> ?slash:char -> string -> string

Compute the "base 64" encoding of the given string argument. Note that the result is a string that only contains the characters a-z, A-Z, 0-9, +, /, =, and optionally spaces, CR and LF characters.

If `pos` and/or `len` are passed, only the substring starting at `pos` (default: 0) with length `len` (default: rest of the string) is encoded.

The result is divided up into lines not longer than `linelength` (without counting the line separator); default: do not divide lines. If `linelength` is smaller than 4, no line division is performed. If `linelength` is not divisible by 4, the produced lines are a bit shorter than `linelength`.

If `crlf` (default: false) the lines are ended by CRLF; otherwise they are only ended by LF. (You need the crlf option to produce correct MIME messages.)

By default, the 63rd character of the alphabet is '+', and the 64th character is '/'. By passing `plus` and `slash` you can choose different characters.

    val encode_tstring : ?pos:int ->
           ?len:int ->
           ?linelength:int ->
           ?crlf:bool ->
           ?plus:char -> ?slash:char -> Netsys_types.tstring -> Stdlib.Bytes.t

Same for tagged string inputs. The result are always bytes, though

    val encode_poly : ?pos:int ->
           ?len:int ->
           ?linelength:int ->
           ?crlf:bool ->
           ?plus:char ->
           ?slash:char -> 's Netstring_tstring.tstring_ops -> 's -> Stdlib.Bytes.t

Polymorphic version

    val decode : ?pos:int ->
           ?len:int ->
           ?accept_spaces:bool -> ?plus:char -> ?slash:char -> string -> string

Decodes the given string argument.

If `pos` and/or `len` are passed, only the substring starting at `pos` (default: 0) with length `len` (default: rest of the string) is decoded.

If `accept_spaces` (default: `false`) is set, the function ignores white space contained in the string to decode (otherwise the function fails if it finds white space). Furthermore, the character '>' is considered as "space", too (so you don't have trouble with mbox mailboxes that accidentally quote "From").

By default, the 63rd character of the alphabet is '+', and the 64th character is '/'. By passing `plus` and `slash` you can choose different characters.

    val decode_tstring : ?pos:int ->
           ?len:int ->
           ?accept_spaces:bool ->
           ?plus:char -> ?slash:char -> Netsys_types.tstring -> Stdlib.Bytes.t

Same for tagged string inputs. The result are always bytes, though

    val decode_poly : ?pos:int ->
           ?len:int ->
           ?accept_spaces:bool ->
           ?plus:char ->
           ?slash:char -> 's Netstring_tstring.tstring_ops -> 's -> Stdlib.Bytes.t

Polymorphic version

    class encoding_pipe : ?linelength:int -> ?crlf:bool -> ?plus:char -> ?slash:char -> unit -> Netchannels.pipe

This pipe encodes the data written into the pipe.

    class decoding_pipe : ?accept_spaces:bool -> ?plus:char -> ?slash:char -> unit -> Netchannels.pipe

This pipe decodes the data written into the pipe.