Ascii85 (Base85) Encoding/Decoding

Ascii85, also called Base85, is a form of binary-to-text encoding. By using five ASCII characters to represent four bytes of binary data, it is more efficient than uuencode or Base64, which use four characters to represent three bytes of data. See ascii85 wikipedia page for more details.
This node module can encode any binary string/buffer to an ascii85 Buffer
and decode encoded string back to original data.
Install
Install ascii85
through npm
.
npm install --save ascii85
Usage
var ascii85 = require('ascii85');
var str = ascii85.encode('easy');
str.toString() === 'ARTY*';
ascii85.decode(str).toString() === 'easy';
API
encode(data, [options])
Encode a string or Buffer
.
data
is a string or a Buffer
.
options
is optional. If it's provided, it can be an array of character or an option object.
- Return a
Buffer
with encoded data.
See following sample for detail.
var ascii85 = require('ascii85');
var buf;
buf = ascii85.encode('easy');
buf = ascii85.encode('easy', ['0', '1', '2', ...]);
buf = ascii85.encode('easy', {
table: [...],
delimiter: false,
groupSpace: false
});
decode(str, [table])
Decode a ascii85-encoded string or Buffer
.
str
is a string or a Buffer
. All invalid characters will be discarded. If str
starts with <~
, it must have ~>
at the end. Otherwise, an error will be thrown.
table
is a sparse array to map char code to decoded value for decoding.
- Return a
Buffer
with decoded data.
See following sample for detail.
var ascii85 = require('ascii85');
var data;
data = ascii85.decode('ARTY*');
data = ascii85.decode('A R T Y *');
data = ascii85.decode('<~ARTY*~>');
ascii85.decode('ARTY*', [...]);
Ascii85(options)
Construct a new codec object. It can store customized options for every encode
/decode
.
var Ascii85 = require('ascii85').Ascii85;
var PostScript = new Ascii85({
delimiter: true
});
PostScript.encode('easy').toString() === '<~ARTY*~>';
ZeroMQ
A specialized codec for ZeroMQ which uses different charset.
var ZeroMQ = require('ascii85').ZeroMQ;
ZeroMQ.encode('easy').toString() === 'wNPU9';
PostScript
A specialized codec for PostScript which always uses delimiter.
var PostScript = require('ascii85').PostScript;
PostScript.encode('easy').toString() === '<~ARTY*~>';
License
This module is licensed under the MIT license that can be found in the LICENSE file.