Skip to content

@caido/quickjs-types / llrt/buffer

llrt/buffer

Interfaces

Buffer

Extends

  • Uint8Array

Indexable

[index: number]: number

Methods

copy()

copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number

Copies data from a region of buf to a region in target, even if the targetmemory region overlaps with buf.

TypedArray.prototype.set() performs the same operation, and is available for all TypedArrays, including Buffers, although it takes different function arguments.

js
import { Buffer } from 'buffer';

// Create two `Buffer` instances.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
buf1.copy(buf2, 8, 16, 20);
// This is equivalent to:
// buf2.set(buf1.subarray(16, 20), 8);

console.log(buf2.toString('ascii', 0, 25));
// Prints: !!!!!!!!qrst!!!!!!!!!!!!!
js
import { Buffer } from 'buffer';

// Create a `Buffer` and copy data from one region to an overlapping region
// within the same `Buffer`.

const buf = Buffer.allocUnsafe(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf[i] = i + 97;
}

buf.copy(buf, 0, 4, 10);

console.log(buf.toString());
// Prints: efghijghijklmnopqrstuvwxyz
Parameters
ParameterTypeDescription
targetUint8ArrayA Buffer or Uint8Array to copy into.
targetStart?numberThe offset within target at which to begin writing.
sourceStart?numberThe offset within buf from which to begin copying.
sourceEnd?numberThe offset within buf at which to stop copying (not inclusive).
Returns

number

The number of bytes copied.

readBigInt64BE()

readBigInt64BE(offset?: number): bigint

Reads a signed, big-endian 64-bit integer from buf at the specified offset.

Integers read from a Buffer are interpreted as two's complement signed values.

Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

bigint

readBigInt64LE()

readBigInt64LE(offset?: number): bigint

Reads a signed, little-endian 64-bit integer from buf at the specifiedoffset.

Integers read from a Buffer are interpreted as two's complement signed values.

Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

bigint

readBigUint64BE()

readBigUint64BE(offset?: number): bigint

Parameters
ParameterType
offset?number
Returns

bigint

Alias

Buffer.readBigUInt64BE

readBigUInt64BE()

readBigUInt64BE(offset?: number): bigint

Reads an unsigned, big-endian 64-bit integer from buf at the specifiedoffset.

This function is also available under the readBigUint64BE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);

console.log(buf.readBigUInt64BE(0));
// Prints: 4294967295n
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

bigint

readBigUint64LE()

readBigUint64LE(offset?: number): bigint

Parameters
ParameterType
offset?number
Returns

bigint

Alias

Buffer.readBigUInt64LE

readBigUInt64LE()

readBigUInt64LE(offset?: number): bigint

Reads an unsigned, little-endian 64-bit integer from buf at the specifiedoffset.

This function is also available under the readBigUint64LE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);

console.log(buf.readBigUInt64LE(0));
// Prints: 18446744069414584320n
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

bigint

readDoubleBE()

readDoubleBE(offset?: number): number

Reads a 64-bit, big-endian double from buf at the specified offset.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);

console.log(buf.readDoubleBE(0));
// Prints: 8.20788039913184e-304
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 8.
Returns

number

readDoubleLE()

readDoubleLE(offset?: number): number

Reads a 64-bit, little-endian double from buf at the specified offset.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);

console.log(buf.readDoubleLE(0));
// Prints: 5.447603722011605e-270
console.log(buf.readDoubleLE(1));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 8.
Returns

number

readFloatBE()

readFloatBE(offset?: number): number

Reads a 32-bit, big-endian float from buf at the specified offset.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([1, 2, 3, 4]);

console.log(buf.readFloatBE(0));
// Prints: 2.387939260590663e-38
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

readFloatLE()

readFloatLE(offset?: number): number

Reads a 32-bit, little-endian float from buf at the specified offset.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([1, 2, 3, 4]);

console.log(buf.readFloatLE(0));
// Prints: 1.539989614439558e-36
console.log(buf.readFloatLE(1));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

readInt16BE()

readInt16BE(offset?: number): number

Reads a signed, big-endian 16-bit integer from buf at the specified offset.

Integers read from a Buffer are interpreted as two's complement signed values.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0, 5]);

console.log(buf.readInt16BE(0));
// Prints: 5
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

readInt16LE()

readInt16LE(offset?: number): number

Reads a signed, little-endian 16-bit integer from buf at the specifiedoffset.

Integers read from a Buffer are interpreted as two's complement signed values.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0, 5]);

console.log(buf.readInt16LE(0));
// Prints: 1280
console.log(buf.readInt16LE(1));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

readInt32BE()

readInt32BE(offset?: number): number

Reads a signed, big-endian 32-bit integer from buf at the specified offset.

Integers read from a Buffer are interpreted as two's complement signed values.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0, 0, 0, 5]);

console.log(buf.readInt32BE(0));
// Prints: 5
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

readInt32LE()

readInt32LE(offset?: number): number

Reads a signed, little-endian 32-bit integer from buf at the specifiedoffset.

Integers read from a Buffer are interpreted as two's complement signed values.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0, 0, 0, 5]);

console.log(buf.readInt32LE(0));
// Prints: 83886080
console.log(buf.readInt32LE(1));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

readInt8()

readInt8(offset?: number): number

Reads a signed 8-bit integer from buf at the specified offset.

Integers read from a Buffer are interpreted as two's complement signed values.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([-1, 5]);

console.log(buf.readInt8(0));
// Prints: -1
console.log(buf.readInt8(1));
// Prints: 5
console.log(buf.readInt8(2));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 1.
Returns

number

readUint16BE()

readUint16BE(offset?: number): number

Parameters
ParameterType
offset?number
Returns

number

Alias

Buffer.readUInt16BE

readUInt16BE()

readUInt16BE(offset?: number): number

Reads an unsigned, big-endian 16-bit integer from buf at the specifiedoffset.

This function is also available under the readUint16BE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0x12, 0x34, 0x56]);

console.log(buf.readUInt16BE(0).toString(16));
// Prints: 1234
console.log(buf.readUInt16BE(1).toString(16));
// Prints: 3456
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

readUint16LE()

readUint16LE(offset?: number): number

Parameters
ParameterType
offset?number
Returns

number

Alias

Buffer.readUInt16LE

readUInt16LE()

readUInt16LE(offset?: number): number

Reads an unsigned, little-endian 16-bit integer from buf at the specified offset.

This function is also available under the readUint16LE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0x12, 0x34, 0x56]);

console.log(buf.readUInt16LE(0).toString(16));
// Prints: 3412
console.log(buf.readUInt16LE(1).toString(16));
// Prints: 5634
console.log(buf.readUInt16LE(2).toString(16));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

readUint32LE()

readUint32LE(offset?: number): number

Parameters
ParameterType
offset?number
Returns

number

Alias

Buffer.readUInt32LE

readUInt32LE()

readUInt32LE(offset?: number): number

Reads an unsigned, little-endian 32-bit integer from buf at the specifiedoffset.

This function is also available under the readUint32LE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);

console.log(buf.readUInt32LE(0).toString(16));
// Prints: 78563412
console.log(buf.readUInt32LE(1).toString(16));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

readUint8()

readUint8(offset?: number): number

Parameters
ParameterType
offset?number
Returns

number

Alias

Buffer.readUInt8

readUInt8()

readUInt8(offset?: number): number

Reads an unsigned 8-bit integer from buf at the specified offset.

This function is also available under the readUint8 alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.from([1, -2]);

console.log(buf.readUInt8(0));
// Prints: 1
console.log(buf.readUInt8(1));
// Prints: 254
console.log(buf.readUInt8(2));
// Throws ERR_OUT_OF_RANGE.
Parameters
ParameterTypeDescription
offset?numberNumber of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 1.
Returns

number

subarray()

subarray(start?: number, end?: number): Buffer

Returns a new Buffer that references the same memory as the original, but offset and cropped by the start and end indices.

Specifying end greater than buf.length will return the same result as that of end equal to buf.length.

This method is inherited from TypedArray.prototype.subarray().

Modifying the new Buffer slice will modify the memory in the original Bufferbecause the allocated memory of the two objects overlap.

js
import { Buffer } from 'buffer';

// Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte
// from the original `Buffer`.

const buf1 = Buffer.alloc(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

const buf2 = buf1.subarray(0, 3);

console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: abc

buf1[0] = 33;

console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: !bc

Specifying negative indexes causes the slice to be generated relative to the end of buf rather than the beginning.

js
import { Buffer } from 'buffer';

const buf = Buffer.from('buffer');

console.log(buf.subarray(-6, -1).toString());
// Prints: buffe
// (Equivalent to buf.subarray(0, 5).)

console.log(buf.subarray(-6, -2).toString());
// Prints: buff
// (Equivalent to buf.subarray(0, 4).)

console.log(buf.subarray(-5, -2).toString());
// Prints: uff
// (Equivalent to buf.subarray(1, 4).)
Parameters
ParameterTypeDescription
start?numberWhere the new Buffer will start.
end?numberWhere the new Buffer will end (not inclusive).
Returns

Buffer

Overrides

Uint8Array.subarray

toString()

toString(encoding?: BufferEncoding, start?: number, end?: number): string

Decodes buf to a string according to the specified character encoding inencoding. start and end may be passed to decode only a subset of buf.

If encoding is 'utf8' and a byte sequence in the input is not valid UTF-8, then each invalid byte is replaced with the replacement character U+FFFD.

js
import { Buffer } from 'node:buffer';

const buf1 = Buffer.allocUnsafe(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

console.log(buf1.toString('utf8'));
// Prints: abcdefghijklmnopqrstuvwxyz
console.log(buf1.toString('utf8', 0, 5));
// Prints: abcde

const buf2 = Buffer.from('tést');

console.log(buf2.toString('hex'));
// Prints: 74c3a97374
console.log(buf2.toString('utf8', 0, 3));
// Prints: té
console.log(buf2.toString(undefined, 0, 3));
// Prints: té
Parameters
ParameterTypeDescription
encoding?BufferEncodingThe character encoding to use.
start?numberThe byte offset to start decoding at.
end?numberThe byte offset to stop decoding at (not inclusive).
Returns

string

Overrides

Uint8Array.toString

write()
Call Signature

write(string: string, encoding?: BufferEncoding): number

Writes string to buf at offset according to the character encoding inencoding. The length parameter is the number of bytes to write. If buf did not contain enough space to fit the entire string, only part of string will be written. However, partially encoded characters will not be written.

js
import { Buffer } from 'buffer';

const buf = Buffer.alloc(256);

const len = buf.write('\u00bd + \u00bc = \u00be', 0);

console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);
// Prints: 12 bytes: ½ + ¼ = ¾

const buffer = Buffer.alloc(10);

const length = buffer.write('abcd', 8);

console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`);
// Prints: 2 bytes : ab
Parameters
ParameterTypeDescription
stringstringString to write to buf.
encoding?BufferEncodingThe character encoding of string.
Returns

number

Number of bytes written.

Call Signature

write(string: string, offset: number, encoding?: BufferEncoding): number

Parameters
ParameterType
stringstring
offsetnumber
encoding?BufferEncoding
Returns

number

Call Signature

write(string: string, offset: number, length: number, encoding?: BufferEncoding): number

Parameters
ParameterType
stringstring
offsetnumber
lengthnumber
encoding?BufferEncoding
Returns

number

writeBigInt64BE()

writeBigInt64BE(value: bigint, offset?: number): number

Writes value to buf at the specified offset as big-endian.

value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(8);

buf.writeBigInt64BE(0x0102030405060708n, 0);

console.log(buf);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
Parameters
ParameterTypeDescription
valuebigintNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

number

offset plus the number of bytes written.

writeBigInt64LE()

writeBigInt64LE(value: bigint, offset?: number): number

Writes value to buf at the specified offset as little-endian.

value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(8);

buf.writeBigInt64LE(0x0102030405060708n, 0);

console.log(buf);
// Prints: <Buffer 08 07 06 05 04 03 02 01>
Parameters
ParameterTypeDescription
valuebigintNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy: 0 <= offset <= buf.length - 8.
Returns

number

offset plus the number of bytes written.

writeBigUint64BE()

writeBigUint64BE(value: bigint, offset?: number): number

Parameters
ParameterType
valuebigint
offset?number
Returns

number

Alias

Buffer.writeBigUInt64BE

writeBigUint64LE()

writeBigUint64LE(value: bigint, offset?: number): number

Parameters
ParameterType
valuebigint
offset?number
Returns

number

Alias

Buffer.writeBigUInt64LE

writeDoubleBE()

writeDoubleBE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. The value must be a JavaScript number. Behavior is undefined when value is anything other than a JavaScript number.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(8);

buf.writeDoubleBE(123.456, 0);

console.log(buf);
// Prints: <Buffer 40 5e dd 2f 1a 9f be 77>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 8.
Returns

number

offset plus the number of bytes written.

writeDoubleLE()

writeDoubleLE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. The value must be a JavaScript number. Behavior is undefined when value is anything other than a JavaScript number.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(8);

buf.writeDoubleLE(123.456, 0);

console.log(buf);
// Prints: <Buffer 77 be 9f 1a 2f dd 5e 40>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 8.
Returns

number

offset plus the number of bytes written.

writeFloatBE()

writeFloatBE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. Behavior is undefined when value is anything other than a JavaScript number.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeFloatBE(0xcafebabe, 0);

console.log(buf);
// Prints: <Buffer 4f 4a fe bb>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeFloatLE()

writeFloatLE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. Behavior is undefined when value is anything other than a JavaScript number.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeFloatLE(0xcafebabe, 0);

console.log(buf);
// Prints: <Buffer bb fe 4a 4f>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeInt16BE()

writeInt16BE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. The value must be a valid signed 16-bit integer. Behavior is undefined when value is anything other than a signed 16-bit integer.

The value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(2);

buf.writeInt16BE(0x0102, 0);

console.log(buf);
// Prints: <Buffer 01 02>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

offset plus the number of bytes written.

writeInt16LE()

writeInt16LE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. The value must be a valid signed 16-bit integer. Behavior is undefined when value is anything other than a signed 16-bit integer.

The value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(2);

buf.writeInt16LE(0x0304, 0);

console.log(buf);
// Prints: <Buffer 04 03>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

offset plus the number of bytes written.

writeInt32BE()

writeInt32BE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. The value must be a valid signed 32-bit integer. Behavior is undefined when value is anything other than a signed 32-bit integer.

The value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeInt32BE(0x01020304, 0);

console.log(buf);
// Prints: <Buffer 01 02 03 04>
Parameters
ParameterTypeDescription
valuenumber-
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeInt32LE()

writeInt32LE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. The value must be a valid signed 32-bit integer. Behavior is undefined when value is anything other than a signed 32-bit integer.

The value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeInt32LE(0x05060708, 0);

console.log(buf);
// Prints: <Buffer 08 07 06 05>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeInt8()

writeInt8(value: number, offset?: number): number

Writes value to buf at the specified offset. value must be a valid signed 8-bit integer. Behavior is undefined when value is anything other than a signed 8-bit integer.

value is interpreted and written as a two's complement signed integer.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(2);

buf.writeInt8(2, 0);
buf.writeInt8(-2, 1);

console.log(buf);
// Prints: <Buffer 02 fe>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 1.
Returns

number

offset plus the number of bytes written.

writeUint16BE()

writeUint16BE(value: number, offset?: number): number

Parameters
ParameterType
valuenumber
offset?number
Returns

number

Alias

Buffer.writeUInt16BE

writeUInt16BE()

writeUInt16BE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. The value must be a valid unsigned 16-bit integer. Behavior is undefined when valueis anything other than an unsigned 16-bit integer.

This function is also available under the writeUint16BE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);

console.log(buf);
// Prints: <Buffer de ad be ef>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

offset plus the number of bytes written.

writeUint16LE()

writeUint16LE(value: number, offset?: number): number

Parameters
ParameterType
valuenumber
offset?number
Returns

number

Alias

Buffer.writeUInt16LE

writeUInt16LE()

writeUInt16LE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. The value must be a valid unsigned 16-bit integer. Behavior is undefined when value is anything other than an unsigned 16-bit integer.

This function is also available under the writeUint16LE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);

console.log(buf);
// Prints: <Buffer ad de ef be>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 2.
Returns

number

offset plus the number of bytes written.

writeUint32BE()

writeUint32BE(value: number, offset?: number): number

Parameters
ParameterType
valuenumber
offset?number
Returns

number

Alias

Buffer.writeUInt32BE

writeUInt32BE()

writeUInt32BE(value: number, offset?: number): number

Writes value to buf at the specified offset as big-endian. The value must be a valid unsigned 32-bit integer. Behavior is undefined when valueis anything other than an unsigned 32-bit integer.

This function is also available under the writeUint32BE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeUInt32BE(0xfeedface, 0);

console.log(buf);
// Prints: <Buffer fe ed fa ce>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeUint32LE()

writeUint32LE(value: number, offset?: number): number

Parameters
ParameterType
valuenumber
offset?number
Returns

number

Alias

Buffer.writeUInt32LE

writeUInt32LE()

writeUInt32LE(value: number, offset?: number): number

Writes value to buf at the specified offset as little-endian. The value must be a valid unsigned 32-bit integer. Behavior is undefined when value is anything other than an unsigned 32-bit integer.

This function is also available under the writeUint32LE alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeUInt32LE(0xfeedface, 0);

console.log(buf);
// Prints: <Buffer ce fa ed fe>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 4.
Returns

number

offset plus the number of bytes written.

writeUint8()

writeUint8(value: number, offset?: number): number

Parameters
ParameterType
valuenumber
offset?number
Returns

number

Alias

Buffer.writeUInt8

writeUInt8()

writeUInt8(value: number, offset?: number): number

Writes value to buf at the specified offset. value must be a valid unsigned 8-bit integer. Behavior is undefined when value is anything other than an unsigned 8-bit integer.

This function is also available under the writeUint8 alias.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeUInt8(0x3, 0);
buf.writeUInt8(0x4, 1);
buf.writeUInt8(0x23, 2);
buf.writeUInt8(0x42, 3);

console.log(buf);
// Prints: <Buffer 03 04 23 42>
Parameters
ParameterTypeDescription
valuenumberNumber to be written to buf.
offset?numberNumber of bytes to skip before starting to write. Must satisfy 0 <= offset <= buf.length - 1.
Returns

number

offset plus the number of bytes written.


BufferConstructor

Methods

alloc()

alloc(size: number, fill?: string | number | Uint8Array, encoding?: BufferEncoding): Buffer

Allocates a new Buffer of size bytes. If fill is undefined, the Buffer will be zero-filled.

js
import { Buffer } from 'buffer';

const buf = Buffer.alloc(5);

console.log(buf);
// Prints: <Buffer 00 00 00 00 00>

If fill is specified, the allocated Buffer will be initialized by calling Buffer.alloc(size, fill).

js
import { Buffer } from 'buffer';

const buf = Buffer.alloc(5, 'a');

console.log(buf);
// Prints: <Buffer 61 61 61 61 61>

If both fill and encoding are specified, the allocated Buffer will be initialized by calling Buffer.aloc(size, fill, encoding).

js
import { Buffer } from 'buffer';

const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');

console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
Parameters
ParameterTypeDescription
sizenumberThe desired length of the new Buffer.
fill?string | number | Uint8ArrayA value to pre-fill the new Buffer with.
encoding?BufferEncodingIf fill is a string, this is its encoding.
Returns

Buffer

allocUnsafe()

allocUnsafe(size: number): Buffer

Allocates a new Buffer of size bytes.

The underlying memory for Buffer instances created in this way is notinitialized. The contents of the newly created Buffer are unknown and may contain sensitive data. Use Buffer.alloc() instead to initializeBuffer instances with zeroes.

js
import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(10);

console.log(buf);
// Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>

buf.fill(0);

console.log(buf);
// Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>

A TypeError will be thrown if size is not a number.

Parameters
ParameterTypeDescription
sizenumberThe desired length of the new Buffer.
Returns

Buffer

allocUnsafeSlow()

allocUnsafeSlow(size: number): Buffer

Allocates a new Buffer of size bytes.

The underlying memory for Buffer instances created in this way is notinitialized. The contents of the newly created Buffer are unknown and may contain sensitive data. Use buf.fill(0) to initialize such Buffer instances with zeroes.

js
import { Buffer } from 'buffer';

// Need to keep around a few small chunks of memory.
const store = [];

socket.on('readable', () => {
  let data;
  while (null !== (data = readable.read())) {
    // Allocate for retained data.
    const sb = Buffer.allocUnsafeSlow(10);

    // Copy the data into the new allocation.
    data.copy(sb, 0, 0, 10);

    store.push(sb);
  }
});

A TypeError will be thrown if size is not a number.

Parameters
ParameterTypeDescription
sizenumberThe desired length of the new Buffer.
Returns

Buffer

byteLength()

byteLength(string: string | ArrayBuffer | SharedArrayBuffer | ArrayBufferView | Buffer, encoding?: BufferEncoding): number

Returns the byte length of a string when encoded using encoding. This is not the same as String.prototype.length, which does not account for the encoding that is used to convert the string into bytes.

js
import { Buffer } from 'buffer';

const str = '\u00bd + \u00bc = \u00be';

console.log(`${str}: ${str.length} characters, ` +
            `${Buffer.byteLength(str, 'utf8')} bytes`);
// Prints: ½ + ¼ = ¾: 9 characters, 12 bytes

When string is a Buffer/DataView/[TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/- Reference/Global_Objects/TypedArray)/ArrayBuffer/[SharedArrayBuffer](https://develop- er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), the byte length as reported by .byteLengthis returned.

Parameters
ParameterTypeDescription
stringstring | ArrayBuffer | SharedArrayBuffer | ArrayBufferView | BufferA value to calculate the length of.
encoding?BufferEncodingIf string is a string, this is its encoding.
Returns

number

The number of bytes contained within string.

concat()

concat(list: readonly Uint8Array[], totalLength?: number): Buffer

Returns a new Buffer which is the result of concatenating all the Buffer instances in the list together.

If the list has no items, or if the totalLength is 0, then a new zero-length Buffer is returned.

If totalLength is not provided, it is calculated from the Buffer instances in list by adding their lengths.

If totalLength is provided, it is coerced to an unsigned integer. If the combined length of the Buffers in list exceeds totalLength, the result is truncated to totalLength.

js
import { Buffer } from 'buffer';

// Create a single `Buffer` from a list of three `Buffer` instances.

const buf1 = Buffer.alloc(10);
const buf2 = Buffer.alloc(14);
const buf3 = Buffer.alloc(18);
const totalLength = buf1.length + buf2.length + buf3.length;

console.log(totalLength);
// Prints: 42

const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);

console.log(bufA);
// Prints: <Buffer 00 00 00 00 ...>
console.log(bufA.length);
// Prints: 42
Parameters
ParameterTypeDescription
listreadonly Uint8Array[]List of Buffer or Uint8Array instances to concatenate.
totalLength?numberTotal length of the Buffer instances in list when concatenated.
Returns

Buffer

from()
Call Signature

from(arrayBuffer: WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>, byteOffset?: number, length?: number): Buffer

Allocates a new Buffer using an array of bytes in the range 0255.

Parameters
ParameterType
arrayBufferWithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>
byteOffset?number
length?number
Returns

Buffer

Call Signature

from(data: Uint8Array | readonly number[]): Buffer

Creates a new Buffer using the passed

Parameters
ParameterTypeDescription
dataUint8Array | readonly number[]data to create a new Buffer
Returns

Buffer

Call Signature

from(data: WithImplicitCoercion<string | Uint8Array | readonly number[]>): Buffer

Parameters
ParameterType
dataWithImplicitCoercion<string | Uint8Array | readonly number[]>
Returns

Buffer

Call Signature

from(str: WithImplicitCoercion<string> | { [toPrimitive]: string; }, encoding?: BufferEncoding): Buffer

Creates a new Buffer containing the given JavaScript string {str}. If provided, the {encoding} parameter identifies the character encoding. If not provided, {encoding} defaults to 'utf8'.

Parameters
ParameterType
strWithImplicitCoercion<string> | { [toPrimitive]: string; }
encoding?BufferEncoding
Returns

Buffer

isBuffer()

isBuffer(obj: any): obj is Buffer

Returns true if obj is a Buffer, false otherwise.

js
import { Buffer } from 'buffer';

Buffer.isBuffer(Buffer.alloc(10)); // true
Buffer.isBuffer(Buffer.from('foo')); // true
Buffer.isBuffer('a string'); // false
Buffer.isBuffer([]); // false
Buffer.isBuffer(new Uint8Array(1024)); // false
Parameters
ParameterType
objany
Returns

obj is Buffer

isEncoding()

isEncoding(encoding: string): encoding is BufferEncoding

Returns true if encoding is the name of a supported character encoding, or false otherwise.

js
import { Buffer } from 'buffer';

console.log(Buffer.isEncoding('utf8'));
// Prints: true

console.log(Buffer.isEncoding('hex'));
// Prints: true

console.log(Buffer.isEncoding('utf/8'));
// Prints: false

console.log(Buffer.isEncoding(''));
// Prints: false
Parameters
ParameterTypeDescription
encodingstringA character encoding name to check.
Returns

encoding is BufferEncoding

Type Aliases

BufferEncoding

BufferEncoding = "hex" | "base64" | "utf-8" | "utf8" | "unicode-1-1-utf8" | "ucs2" | "ucs-2" | "utf-16le" | "utf16le" | "utf-16" | "utf16" | "utf-16be" | "utf16be" | "windows-1252" | "ansi_x3.4-1968" | "ascii" | "cp1252" | "cp819" | "csisolatin1" | "ibm819" | "iso-8859-1" | "iso-ir-100" | "iso8859-1" | "iso88591" | "iso_8859-1" | "iso_8859-1:1987" | "l1" | "latin1" | "us-ascii" | "x-cp1252"


WithImplicitCoercion

WithImplicitCoercion<T> = T | { valueOf: T; }

Type Parameters

Type Parameter
T

Variables

Buffer

Buffer: BufferConstructor


constants

const constants: object

Type Declaration

MAX_LENGTH

MAX_LENGTH: number

MAX_STRING_LENGTH

MAX_STRING_LENGTH: number

Functions

atob()

atob(data: string): string

Decodes a string of Base64-encoded data into bytes, and encodes those bytes into a string using UTF-8.

The data may be any JavaScript-value that can be coerced into a string.

Parameters

ParameterTypeDescription
datastringThe Base64-encoded input string.

Returns

string

Legacy

Use Buffer.from(data, 'base64') instead.


btoa()

btoa(data: string): string

Decodes a string into bytes using UTF-8, and encodes those bytes into a string using Base64.

The data may be any JavaScript-value that can be coerced into a string.

Parameters

ParameterTypeDescription
datastringAn ASCII (Latin1) string.

Returns

string

Legacy

Use buf.toString('base64') instead.