1.0.0 • Published 5 years ago

binproto-parser v1.0.0

Weekly downloads
3
License
ISC
Repository
github
Last release
5 years ago

Binary Protocol Parser

Convert Binary Protocol to JSON format

Qucik Start

// Declare a Array for parsing binary data
const PROTO_MAP = [
  {
    name: "data",
    offset: 0,
    len: 1
  }
];

// pass a buffer and parse binary data
const parser = require("binproto-parser").default;

const buffer = Buffer.from("0A", "hex");

const obj = parser(buffer, PROTO_MAP); // { data: 10 }

Adavnced

Read data by bits

// Declare a Array for parsing binary data
const PROTO_MAP = [
  {
    name: "parking_lot",
    offset: 0,
    len: 1,
    bit: [
      {
        name: "isNear",
        offset: 0,
        len: 4
      },
      {
        name: "isFree",
        offset: 4,
        len: 4
      }
    ]
  }
];

// pass a buffer and parse binary data
const parser = require("../binproto-parser").default;

const buffer = Buffer.from("11", "hex");

const obj = parser(buffer, PROTO_MAP); // { parking_lot: { isNear: 1, isFree: 1 } }

Render

// Declare a Array for parsing binary data
const PROTO_MAP = [
  {
    name: "parking_lot",
    offset: 0,
    len: 1,
    bit: [
      {
        name: "isNear",
        offset: 0,
        len: 4,
        render: val => {
          return val === 1;
        }
      },
      {
        name: "isFree",
        offset: 4,
        len: 4,
        render: val => {
          return val === 1;
        }
      }
    ]
  },
  {
    name: "hostel",
    offset: 1,
    len: 1,
    render: val => {
      if (val === 0) return "Unknown";
      else return `Hostel - ${val}`;
    }
  }
];

// pass a buffer and parse binary data
const parser = require("../binproto-parser").default;

const buffer = Buffer.from("1101", "hex");

const obj = parser(buffer, PROTO_MAP); // { parking_lot: { isNear: true, isFree: true }, hostel: 'Hostel - 1' }

BigEnd And LittleEnd

// Declare a Array for parsing binary data
const PROTO_MAP = [
  {
    name: "BE",
    offset: 0,
    len: 2,
    end: "BE"
  },
  {
    name: "LE",
    offset: 2,
    len: 2,
    end: "LE"
  },
  {
    name: "NONE",
    offset: 4,
    len: 2
  }
];

// pass a buffer and parse binary data
const parser = require("../binproto-parser").default;

const buffer = Buffer.from("00010001", "hex");

const obj = parser(buffer, PROTO_MAP); // { BE: 1, LE: 256, NONE: <Buffer 00 01> }