A fast and complete ByteBuffer implementation using either ArrayBuffers in the browser or node Buffers under node.js, generated from a single source tree through MetaScript.
- Three API-compatible versions:
- bytebuffer Backing buffer: ArrayBuffer, Accessor: Uint8Array
- bytebuffer-dataview Backing buffer: ArrayBuffer, Accessor: DataView
- bytebuffer-node Backing buffer / Accessor: node Buffer
- 8, 16, 32 and 64 bit (through long.js) signed and unsigned integers
- 32 and 64 bit floats
- Varints as used in protobuf (32 and 64 bit, zig-zag)
- Base64, utf8, binary, hex and debug encodings
- Handy string and debugging utilities
- Big and little endianness
- Relative and absolute zero-copy operations wherever possible
- Transparent resizing when using unknown-length data
- Chaining of all operations that do not return a specific value
- Slicing, appending, prepending, reversing, flip, mark, reset, etc.
The library is compatible with CommonJS and AMD loaders and is exposed globally as
dcodeIO.ByteBuffer if neither is
var ByteBuffer = require("bytebuffer"); var bb = new ByteBuffer() .writeIString("Hello world!") .flip(); console.log(bb.readIString()+" from bytebuffer.js");
In the browser, 64 bit integer support is optional and present only if Long.js has been loaded prior to bytebuffer.js.
Support for IE<10, FF<15, Chrome<9 etc.
- Use bytebuffer-dataview with a polyfill (see)
Dretch (IE8 compatibility)