3.1.0-2 • Published 4 years ago

@jimpick/bytes-iec v3.1.0-2

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Bytes utility

NPM Version NPM Downloads

Utility to parse a string bytes (ex: 1TB) to bytes (1,000,000,000,000) and vice-versa.

This uses the byte units defined in ISO/IEC 80000-13:2008, both the binary prefixes and the original SI units.

This is a fork of the bytes module, except:

  • It uses IEC units by default
  • Supports a wider range of units
  • Supports changing to compatability (JEDEC) mode, and formatting in whichever prefix type you prefix (binary, metric, compatibility)

Supported Units

Supported units and abbreviations are as follows and are case-insensitive:

Metric/Decimal Prefixes

ValueAbbrName
1Bbyte
10001kBkilobyte
10002MBmegabyte
10003GBgigabyte
10004TBterabyte
10005PBpetabyte
10006EBexabyte
10007ZBzettabyte
10008YByottabyte

Binary Prefixes:

ValueAbbrName
1Bbyte
10241KiBkibibyte
10242MiBmebibyte
10243GiBgibibyte
10244TiBtebibyte
10245PiBpebibyte
10246EiBexbibyte
10247ZiBzebibite
10248YiByobibite

Compatibility Binary Prefixes (JEDEC)

Overwrites the lower units of the metric system with the commonly misused prefixes

ValueAbbrName
10001kBkilobyte
10002MBmegabyte
10003GBgigabyte
10004TBterabyte

Installation

This is a Node.js module available through the npm registry. Installation is done using the npm install command:

npm install bytes-iec

Usage

var bytes = require('bytes');

bytes.format(number value, options): string|null

Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is rounded.

It supports the following output formats:

  • binary: uses the binary prefixes (KiB, MiB...)
  • decimal|metric: uses the metric system (decimal) prefixes (kB, MB...)
  • compatibility: uses the binary units, but the metric prefixes (kB == 1024B, MB...)

Arguments

NameTypeDescription
valuenumberValue in bytes
optionsObjectConversion options

Options

PropertyTypeDescription
decimalPlacesnumbernullMaximum number of decimal places to include in output. Default value to 2.
fixedDecimalsbooleannullWhether to always display the maximum number of decimal places. Default value to false
thousandsSeparatorstringnullExample of values: ' ', ',' and .... Default value to ''.
unitstringnullThe unit in which the result will be returned (B/KB/MB/GB/TB). Default value to '' (which means auto detect).
unitSeparatorstringnullSeparator to use between number and unit. Default value to ''.
modestring&124;nullWhich format to output: binary, metric, decimal, compatibility. Default value is metric

Returns

NameTypeDescription
resultsstringnullReturn null upon error. String value otherwise.

Example

bytes(1000);
// output: '1kB'

bytes(1000, {thousandsSeparator: ' '});
// output: '1 000B'

bytes(1024);
// output: '1.02kB'

bytes(1024 * 1.7, {decimalPlaces: 0});
// output: '2KB'

bytes(1000, {unitSeparator: ' '});
// output: '1 kB'

bytes(2048, {mode: 'binary'});
// output: '2 KiB'

bytes(1024 * 1024 * 2, {unit: 'KiB'});
// output: '2048 KiB'

bytes(1024 * 1024 * 2, {unit: 'KB'});
// output: '2097.152 KB'

bytes(1024 * 1024 * 2, {unit: 'KB', mode: 'compatibility'});
// output: '2048 KB'

bytes.parse(string|number value): number|null

Parse the string value into an integer in bytes. If no unit is given, or value is a number, it is assumed the value is in bytes.

If the unit given has partial bytes, they are dropped (rounded down).

Arguments

NameTypeDescription
valuestringnumberString to parse, or number in bytes.
optionsObjectConversion options
PropertyTypeDescription
modestring|nullWhich mode to use (see bytes.format)

Returns

NameTypeDescription
resultsnumbernullReturn null upon error. Value in bytes otherwise.

Example

bytes('1kB');
// output: 1024

bytes('1024');
// output: 1024

bytes('1.0001 kB');
// output: 1000
bytes('1.0001 KiB');
// output: 1024

bytes('1kB', {mode: compatibility});
// output: 1024

bytes.withDefaultMode(string mode): object

Returns a new module which acts like the bytes module, except with the given mode as the default.

Arguments

NameTypeDescription
modestringDefault mode to use

Returns

NameTypeDescription
resultsobjectReturns the byte.js module, with a default mode

Example

var bytes = require('bytes').withDefaultMode('compatibility');

bytes('1kB');
// output: 1024

bytes('1KiB');
// output: 1024

bytes(1024);
// output: 1 kB

bytes(1024, {mode: 'metric'});
// output: 1.02kB

bytes('1kB', {mode: 'metric'});
// output: 1000

License

MIT