Skip to content

zuenkoma/binary-rw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

binary-rw

Simple and lightweight binary reader and writer classes for working with ArrayBuffers. Provides a convenient API for reading/writing integers, floats, and varints with support for little/big endian.

Installation

npm install github:zuenkoma/binary-rw

Usage

BinaryReader

import { BinaryReader } from 'binary-rw';

// Create from an ArrayBuffer
const buffer = new ArrayBuffer(16);
const reader = new BinaryReader(buffer);

// Read values (automatically advances offset)
const int8 = reader.readInt8();
const uint16 = reader.readUint16(true); // little endian
const float32 = reader.readFloat32();

// Manual offset control
reader.skip(4); // skip 4 bytes
reader.seek(0); // go back to start

// Read variable-length integer (LEB128)
const varInt = reader.readVarInt();

BinaryWriter

import { BinaryWriter } from 'binary-rw';

const writer = new BinaryWriter();

// Write values (automatically grows buffer)
writer.writeInt8(-42);
writer.writeUint16(65535, true); // little endian
writer.writeFloat32(3.14159);

// Write variable-length integer
writer.writeVarInt(300);

// Get the final buffer
const result = writer.toBuffer(); // ArrayBuffer

API

BinaryReader

Constructor:

  • new BinaryReader(buffer: ArrayBuffer, offset: number = 0)

Methods:

  • skip(bytes: number): void - Skip specified number of bytes
  • seek(offset: number): void - Move to absolute offset
  • readInt8(): number - Read signed 8-bit integer
  • readUint8(): number - Read unsigned 8-bit integer
  • readInt16(littleEndian: boolean = false): number - Read signed 16-bit integer
  • readUint16(littleEndian: boolean = false): number - Read unsigned 16-bit integer
  • readInt32(littleEndian: boolean = false): number - Read signed 32-bit integer
  • readUint32(littleEndian: boolean = false): number - Read unsigned 32-bit integer
  • readFloat32(littleEndian: boolean = false): number - Read 32-bit float
  • readFloat64(littleEndian: boolean = false): number - Read 64-bit float
  • readVarInt(): number - Read LEB128 variable-length integer

Properties:

  • offset: number - Current read position (gettable and settable)

BinaryWriter

Constructor:

  • new BinaryWriter(initialSize: number = 32) - Create with initial buffer size

Methods:

  • writeInt8(value: number): void - Write signed 8-bit integer
  • writeUint8(value: number): void - Write unsigned 8-bit integer
  • writeInt16(value: number, littleEndian: boolean = false): void - Write signed 16-bit integer
  • writeUint16(value: number, littleEndian: boolean = false): void - Write unsigned 16-bit integer
  • writeInt32(value: number, littleEndian: boolean = false): void - Write signed 32-bit integer
  • writeUint32(value: number, littleEndian: boolean = false): void - Write unsigned 32-bit integer
  • writeFloat32(value: number, littleEndian: boolean = false): void - Write 32-bit float
  • writeFloat64(value: number, littleEndian: boolean = false): void - Write 64-bit float
  • writeVarInt(value: number): void - Write LEB128 variable-length integer
  • toBuffer(): ArrayBuffer - Get the written data as ArrayBuffer

Endianness

All read/write methods accept an optional littleEndian parameter:

  • true - little endian (Intel/x86)
  • false - big endian (network byte order, default)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors