base64encode encodes a data into base64 encoding. The source can be a file, binary connection or a raw vector.

base64decode decodes a base64-encoded string into binary data. The source can be a string or a connection, the output is either a raw vector (output=NULL) or a binary connection.

base64encode(what, linewidth, newline)
base64decode(what, output = NULL, file)

Arguments

what

data to be encoded/decoded. For base64encode it can be a raw vector, text connection or file name. For base64decode it can be a string, raw vector or a binary connection.

linewidth

if set, the output is split into lines with at most linewidth characters per line. Zero or NA denotes no limit and values 1 .. 3 are silently treated as 4 since that is the shortest valid line.

newline

only applicable if linewidth is set; if set (string), the result will be a single string with all lines joined using the newline string

output

if NULL then the output will be a raw vector with the decoded data, otherwise it must be either a filename (string) or a binary connection.

file

file name (string) for data to use as input instead of what. It is essentially just a shorthand for base64decode(file(name)). Only one of what and file can be specified.

Value

base64encode: A character vector. If linewith > 0 and newline is not set then it will consist of as many elements as there are lines. Otherwise it is a single string.

base64decode: If output = NULL then a raw vector with the decoded content, otherwise the number of bytes written into the connection.

Author

Simon Urbanek

Examples

  base64encode(1:100)
#> [1] "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="
  base64encode(1:100, 70)
#> [1] "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz"
#> [2] "NDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="
  base64encode(1:100, 70, "\n")
#> [1] "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz\nNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="
  x <- charToRaw("the decoded content, otherwise the number of bytes")
  y <- base64decode(base64encode(x))
  stopifnot(identical(x, y))