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:
- ByteBufferNB Backing buffer / Accessor: node Buffer
- ByteBufferAB Backing buffer: ArrayBuffer, Accessor: Uint8Array
- ByteBufferAB_DataView Backing buffer: ArrayBuffer, Accessor: DataView
- 8, 16, 32 and 64 bit 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
available.
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.
- Use ByteBufferAB_DataView with a polyfill (see)
Dretch (IE8 compatibility)
Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html