UNPKG

uleb128_33

Version:

Encoding and decoding large numbers (uleb128 and uleb128_33)

130 lines (96 loc) 3.31 kB
# ULEB128_33 Encoding and decoding large numbers (uleb128 and uleb128_33) # Installation ```bash npm install uleb128_33 ``` # Documentation #### `readUleb128`: Gets the ArrayLike parameter, returns the object. You can also specify an index from which to read in the buffer, the default is 0. ```javascript const readUleb128: (buffer: ArrayLike<number>, index?: number) => { value: number; length: number; }; ``` #### `readUleb128_33`: Gets the ArrayLike parameter, returns the object. You can also specify an index from which to read in the buffer, the default is 0. ```javascript const readUleb128_33: (buffer: ArrayLike<number>, index?: number) => { value: number; length: number; isMark: number; }; ``` #### `writeUleb128`: Gets an integer parameter, can be a string or a number. Returns array of bytes ```javascript const writeUleb128: (integer: number | string) => number[]; ``` #### `writeUleb128_33`: Gets an integer parameter, can be a string or a number, and an optional isMark, boolean (see below). If not specified, it is determined automatically. Returns an array of bytes ```javascript const writeUleb128_33: (integer: number | string, isMark?: boolean) => number[]; ``` #### `getUleb128Length`: Gets an integer parameter, can be a string or a number. Returns number length ```javascript const getUleb128Length: (integer: number | string) => number; ``` #### `getUleb128_33Length`: Gets an integer parameter, can be a string or a number. Returns number length ```javascript const getUleb128_33Length: (integer: number | string) => number; ``` ##### `isMark` If the "isMark" is 0, then the value read is a number (32-bit number) Otherwise, the value is a 64-bit number, and you need to read another ULEB128 # Usage #### ESNext ```javascript import { getUleb128Length, getUleb128_33Length, readUleb128, readUleb128_33, writeUleb128, writeUleb128_33, } from "uleb128_33"; ``` #### CommonJS ```javascript const { getUleb128Length, getUleb128_33Length, readUleb128, readUleb128_33, writeUleb128, writeUleb128_33, } = require("uleb128_33"); ``` #### readUleb128 ```javascript const uintArray = new Uint8Array([ 133, 133, 133, 5, 255, 243, 151, 229, 228, 131, 24, 11, 35, 11, 111, 66, ]); const dataOne = readUleb128(uintArray); const dataTwo = readUleb128(uintArray.subarray(dataOne.length)); console.log(dataOne); // { length: 4, value: 10568325 } console.log(dataTwo); // { length: 7, value: 105683251231231 } ``` #### readUleb128_33 ```javascript const uintArray = [ 138, 152, 184, 128, 1, 193, 253, 243, 174, 137, 188, 188, 222, 3, ]; const dataOne = readUleb128_33(uintArray); const dataTwo = readUleb128_33(uintArray.slice(dataOne.length)); console.log(dataOne); // { isMark: 0, value: 134678021, length: 5 } console.log(dataTwo); // { isMark: 1, value: 134678012312321888, length: 9 } ``` #### writeUleb128_33 ```javascript const dataOne = writeUleb128_33(134678021); const dataTwo = writeUleb128_33("134678012312321888"); console.log(dataOne); // [138, 152, 184, 128, 1] console.log(dataTwo); // [193, 253, 243, 174, 137, 188, 188, 222, 3] ``` # Test You can run the tests through `npm run test`. You will need to install `rimraf`, `typescript`, and `jest` in the global area # LICENSE The MIT License (MIT)