
Security News
Astral Launches pyx: A Python-Native Package Registry
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Encode and decode arbitrarily large signed and unsigned BigInts.
This library is TypeScript-native, ESM-only, and has zero dependencies. It uses Uint8Arrays and works in the browser, Node, and Deno. It uses the same binary encoding as Go's encoding/binary module, the Protobuf spec, and the varint / signed-varint NPM packages.
npm i big-varint
import { encode } from "big-varint/signed"
const i = -300n
encode(i) // Uint8Array(2) [ 215, 4 ]
import { decode } from "big-varint/signed"
const data = new Uint8Array([215, 4])
decode(data) // -300n
decode
can also be passed an optional offset
parameter:
import { decode } from "big-varint/signed"
const data = new Uint8Array([0, 0, 215, 4, 37, 37, 37])
decode(data, 2) // -300n
// The encoding length of the most recently decoded value
// can be accessed via the `decode.bytes` property.
decode.bytes // 2
import { encodingLength } from "big-varint/signed"
const i = -300n
encodingLength(i) // 2
import encode from "big-varint/unsigned"
const i = 123456789012345678901234567890n
encode(i)
/*
Uint8Array(14) [
210, 149, 252, 241,
228, 157, 248, 185,
195, 237, 191, 200,
238, 49
]
*/
import { decode } from "big-varint/unsigned"
const data = new Uint8Array([210, 149, 252, 241, 228, 157, 248, 185, 195, 237, 191, 200, 238, 49])
decode(data) // 123456789012345678901234567890n
decode
can also be passed an optional offset
parameter:
import { decode } from "big-varint/unsigned"
const data = new Uint8Array([
0, 0, 0, 0, 210, 149, 252, 241, 228, 157, 248, 185, 195, 237, 191, 200, 238, 49, 37, 37, 0, 0,
])
decode(data, 4) // 123456789012345678901234567890n
// The encoding length of the most recently decoded value
// can be accessed via the `decode.bytes` property.
decode.bytes // 14
import { encodingLength } from "big-varint/unsigned"
const i = 123456789012345678901234567890n
encodingLength(i) // 14
Tests use AVA and live in the test directory.
npm run test
A previous version of this library was adapted from chrisdickinson/varint, but has since been rewritten from scratch.
I don't expect to add any additional functionality to this library, but am potentially open to proposals for better interfaces. Open issues to discuss any questions before making an PRs.
MIT © 2021 Joel Gustafson
FAQs
Encode and decode arbitrarily large signed and unsigned BigInts
The npm package big-varint receives a total of 0 weekly downloads. As such, big-varint popularity was classified as not popular.
We found that big-varint demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.
Security News
The latest Opengrep releases add Apex scanning, precision rule tuning, and performance gains for open source static code analysis.