Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
bn-str-256
Advanced tools
Simple, functional big number library for up to 256-bit (32-byte) numbers that outputs decimal strings, with hex, binary, octal, and Buffer decoding/encoding.
A simple, functional library for big number math, with up to 120 digits of precision, more than suitable for working with 256-bit/32-byte numbers used in domains like blockchain.
What sets this apart from other big number libraries is a very simple
functional syntax where most operations result in a decimal
string (e.g., '412.959'
), which, depending on
your application, may be a more useful representation.
Additionally, all functions accept plain numbers, decimal strings, exponential
strings (e.g., '1.5e-8'
), hex (e.g., '0xf00b47'
),
binary (e.g., '0b10011'
), or octal (e.g., '04471'
) encodings,
as well as node Buffer
objects as input. The library can likewise convert
numbers to any of these encodings or Buffer
objects.
This library is built as a wrapper around the awesome decimal.js-light library.
npm install bn-str-256
# or
yarn add bn-str-256
const bn = require('bn-str-256');
// Add two numbers.
bn.add(1234, '0x4953'); // '20005'
// Subtract two numbers.
bn.sub(1234, '1.5e-3'); // '1233.9985''
// Multiply two numbers.
bn.mul('1234.521', '305'); // output '376528.905'
// Divide two numbers.
bn.div(1234, '0x4953'); // '0.06573970486...'
// Take the modulo of two numbers.
bn.mod('1.412e8', 33); // '29'
// Raise to a power.
bn.pow(1234, 8); // '5376767751082385640407296'
// Take the 3rd root.
bn.pow(1234, 1/3); // '10.7260146688...'
// Remove decimals.
bn.int(44.4121); // '44'
// Round.
bn.round(44.68); // '45'
// Count decimal places.
bn.dp(44.312); // 3
// Count significant digits.
bn.dp(44.312); // 5
// Truncate decimal places.
bn.dp(44.312, 2); // '44.31'
// Truncate significant digits.
bn.dp(44.312, 3); // '44.3'
// Get the sign of a number.
bn.sign('-31.4121'); // -1
// Work with some big numbers
bn.sub('0x8ffffffffffffffffffffffffffffffffffffff',
'1591029491249109201931039109512131121212') // '51380915346385064...'
// Compare numbers a variety of ways.
bn.cmp(1, 2); // -1
bn.gt(321, 321); // false
bn.gte(321, 321); // true
bn.lt(320, 321); // true
bn.lte(320, 321); // true
// Take the minimum of two values.
bn.min('1294.31221944', '5.421e6'); // '1294.31221944'
// Take the maximum of two values.
bn.min('1294.31221944', '5.421e6'); // '5421000'
// Clamp a value to within an interval.
bn.min('1600', '1294.31221944', '5.421e6'); // '1600'
// Just parse a hex value.
bn.parse('0x49121') // '299297'
// Just parse a binary value.
bn.parse('0b1001') // '9'
// Just parse a Buffer object.
bn.parse(Buffer.from('foo')); // 6713199
// Do some math and output a hex string.
bn.toHex(bn.mul('3043131212', '495')); // 0x15eb97423f4
// Left pad a hex string to 20 digits.
bn.toHex('4491959969129121', 20); // 0x0000000ff569ee4e22a1
// Convert to a buffer.
bn.toBuffer('99129129412'); // <Buffer 17 14 8e 79 c4>
// Convert to native javascript Number type.
bn.toNumber('0x491fc712d'); // 19629109549
// Split a number up into its parts.
bn.split('-34.99'); // { sign: '-', integer: '34', decimal: '99' }
name (alias) | description |
---|---|
parse(x) (expand) | convert a Number, exponential string, hex/octal/binary-encoded string, or buffer object into a decimal string |
add(a, b) (plus) | Add a and b |
sub(a, b) (minus) | Subtract b from a |
mul(a, b) (times) | Multiply a and b |
div(a, b) (over) | Divide a over b |
idiv(a, b) | Divide a by b and return the integer portion |
mod(a, b) | a modulo b |
pow(x, y) (raise) | Raise x to the y power |
log(x) (ln) | Natural logarithm of x |
log(x, base) | Logarithm of x with base y |
int(x) | Return the integer portion of x (no rounding) |
round(x) | Round x to an integer |
sum(...args) | Sum all arguments |
neg(x) (negate) | Negate x |
abs(x) | Take the absolute value of x |
sqrt(x) | Take the square root of x |
exp(y) | Raise the mathematical constant e to y |
max(a, b) | Take the maximum of a and b |
min(a, b) | Take the minimum of a and b |
clamp(x, l, h) | Clamp x to be within l and h , inclusive |
sd(x) | Get the number of significant digits of x |
sd(x, n) | Set the number of significant digits of x to n |
dp(x) | Get the number of decimal places of x |
dp(x, n) | Set the number of decimal places of x to n |
sign(x) | Get the sign of x (-1 if x < 0 , 1 otherwise) |
cmp(a, b) | Compare a with b (where -1 if a < b , 0 if a == b , 1 if a > b) |
eq(a, b) | Test if a == b |
ne(a, b) | Test if a != b |
gt(a, b) | Test if a > b |
lt(a, b) | Test if a < b |
gte(a, b) | Test if a >= b |
lte(a, b) | Test if a <= b |
toHex(x) | Convert x to a hex string (e.g., 0xf3abb ) |
toHex(x, length) | Convert x to a hex string and left truncate/pad it to length digits. If length is negative, the result will be right padded/truncated. |
toOctal(x) | Convert x to an octal string (e.g., 04335 ) |
toOctal(x, length) | Convert x to an octal string and left truncate/pad it to length digits. If length is negative, the result will be right padded/truncated. |
toBinary(x) | Convert x to a binary string (e.g., 0b10111010 ) |
toBinary(x, length) | Convert x to a binary string and left truncate/pad it to length digits. If length is negative, the result will be right padded/truncated. |
toBuffer(x) | Convert x to a Buffer object |
toBuffer(x, size) | Convert x to a Buffer object, and left truncate/pad it to size bytes. If size is negative, the result will be right padded/truncated. |
toBits(x) | Convert x to an array of 1 s and 0 s representing its bits. |
toBits(x, length) | Convert x to bit array and left truncate/pad it to length digits. If length is negative, the result will be right padded/truncated. |
fromBits(bits) | Convert a bits array of 1 s and 0 s to a number |
toNumber(x) | Convert x to a native Number type. Precision loss may occur. |
E | The mathematical constant e (2.71828... ) |
PI | The mathematical constant π (3.1415926... ) |
FAQs
Simple, functional big number library for up to 256-bit (32-byte) numbers that outputs decimal strings, with hex, binary, octal, and Buffer decoding/encoding.
The npm package bn-str-256 receives a total of 7,147 weekly downloads. As such, bn-str-256 popularity was classified as popular.
We found that bn-str-256 demonstrated a not healthy version release cadence and project activity because the last version was released 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
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.