README
buffer
Buffer encode/decode for JavaScript
API
buffer.form
import buffer from '@airb/buffer';
// transform string
let utf8 = buffer.from('✓ à la mode 中国');
let base64 = buffer.from('4pyTIMOgIGxhIG1vZGUg5Lit5Zu9', 'base64');
// toSring
utf8.toString('base64'); // 4pyTIMOgIGxhIG1vZGUg5Lit5Zu9
base64.toString(); // ✓ à la mode 中国
// write and read
let bf = buffer();
// write
bf.write('bit', [1, 0, 1, 0]);
bf.write('int', 12);
bf.write('int', -12);
bf.write('uint', 12);
bf.write('uint', -12);
bf.write('float', 0.25);
bf.write('float', -300.15);
bf.write('double', 0.25);
bf.write('double', -300.15);
bf.write('string', 'abc');
bf.write('string', '中国');
bf.write('bytes', Buffer.from('abc中国'));
// length
bf.length // number
bf.buffer // Uint8Array
// read
bf.read('bit'); // [1, 0, 1, 0]
bf.read('int'); // 12
bf.read('int'); // -12
bf.read('uint'); // 12
bf.read('uint'); // -12
bf.read('float'); // 0.25
bf.read('float'); // -300.15
bf.read('double'); // 0.25
bf.read('double'); // -300.15
bf.read('string'); // 'abc'
bf.read('string'); // '中国'
bf.read('bytes'); // [...Buffer.from('abc中国')]
// reread
bf.read('bit'); // undefined
bf.read('bit', 0); // [1, 0, 1, 0]
bf.read('uint', 4); // -12
bf.read('float'); // 0.25
base64
import base64 from '@airb/buffer/base64';
// encode/decode
base64.encode('✓ à la mode 中国'); // '4pyTIMOgIGxhIG1vZGUg5Lit5Zu9'
base64.decode('4pyTIMOgIGxhIG1vZGUg5Lit5Zu9'); // '✓ à la mode 中国'
TypedBuffer
import TypedBuffer from '@airb/buffer/TypedBuffer';
// create typed buffer
const bf = new TypedBuffer();
// add type
bf.add('body', { list: 'uint[]' });
bf.add('status', { code: 'uint', message: 'string', data: 'body' });
// encode
bf.encode('body', { list: [1] }); // Uint8Array [ 0, 1, 1 ]
bf.encode('status', { code: 1, data: { list: [1, 2] } }); // Uint8Array [ 0, 4, 0, 2, 1, 2, 2, 1 ]
// decode
bf.decode('body', [ 0, 1, 1 ]); // { list: [1] }
bf.decode('status', [ 0, 4, 0, 2, 1, 2, 2, 1 ]); // { code: 1, data: { list: [1, 2] } }