Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including arraybuffer-utils with all npm packages installed. Try it out:

var arraybufferUtils = require("arraybuffer-utils")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

arraybuffer-utils v1.1.0

A simple utility for manipulating arraybuffers

ArrayBuffer-Utils

Make writing and reading data from the standard built-in object ArrayBuffer easier

Installation

$ npm install arraybuffer-utils

Documentation

Click to view online documentations

Basic feature list

  • Chainable functions
  • Remembers offset
  • Remembers endianness

Example Usage

Importing the module

var ArrayBufferUtils = require('arraybuffer-utils');
var BufferWriter = ArrayBufferUtils.BufferWriter();
var BufferReader = ArrayBufferUtils.BufferReader();

Write to ArrayBuffer using BufferWriter

BufferWriter(buffer, offset = 0, isLittleEndian = false)

function write(){
    var arrayBuffer = new ArrayBuffer(30);
    var bufferWriter = new BufferWriter(arrayBuffer); //second and third parameters are optional
    var bufferWriter = new BufferWriter(arrayBuffer, 0);
    var bufferWriter = new BufferWriter(arrayBuffer, 0, false);

    //chainable functions
    bufferWriter
        .writeInt8(1)       //offset is now 1
        .writeUint8(2)      //offset is now 2
            .useLittleEndian()      //change to little endian
        .writeInt16(3)      //offset is now 4
        .writeUint16(4)     //offset is now 6
        .writeInt32(5)      //offset is now 10
            .useBigEndian()         //change to big endian
        .writeUint32(6)     //offset is now 14
        .writeFloat32(7)    //offset is now 18
        .writeFloat64(8);   //offset is now 26
        .writeChar("A")     //offset is now 28
        .writeString("Hello World!")    //offset is now 54 (increased by (12 + 1) * 2)

    var offset = bufferWriter.getOffset();  //returns current offset
    var size = bufferWriter.getSize();      //returns size of arraybuffer in bytes

    var littleEndian = bufferWriter.isLittleEndian();   //returns true if currently using little endian
    var bigEndian = bufferWriter.isBigEndian();         //returns true if currently using big endian
}

Read from ArrayBuffer using BufferReader

BufferReader(buffer, offset = 0, isLittleEndian = false)

function write(){
    var arrayBuffer = new ArrayBuffer(30);
    var bufferReader = new BufferReader(arrayBuffer); //second and third parameters are optional
    var bufferReader = new BufferReader(arrayBuffer, 0);
    var bufferReader = new BufferReader(arrayBuffer, 0, false);

    var int8 = bufferReader.readInt8();         //offset is now 1
    var uInt8 = bufferReader.readUint8();       //offset is now 2
    var int16 = bufferReader.readInt16();       //offset is now 4
    var uInt16 = bufferReader.readUint16();     //offset is now 6
    var int32 = bufferReader.readInt32();       //offset is now 10
    var uInt32 = bufferReader.readUint32();     //offset is now 14
    var float32 = bufferReader.readFloat32();   //offset is now 18
    var float64 = bufferReader.readFloat64();   //offset is now 26
    var char = bufferReader.writeChar("A")     //offset is now 28
    var string = bufferReader.writeString("Hello World!")    //offset is now 54 (increased by (12 + 1) * 2)

    var offset = bufferReader.getOffset();  //returns current offset
    var size = bufferReader.getSize();      //returns size of arraybuffer in bytes

    bufferReader.useLittleEndian();     //change to little endian
    bufferReader.useBigEndian();        //change to big endian

    var littleEndian = bufferReader.isLittleEndian();   //returns true if currently using little endian
    var bigEndian = bufferReader.isBigEndian();         //returns true if currently using big endian
}
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free