method BufferConstructor.from
Overload 1
#BufferConstructor.from(array: WithImplicitCoercion<ArrayLike<number>>): Buffer
Allocates a new Buffer
using an array
of bytes in the range 0
– 255
.
Array entries outside that range will be truncated to fit into it.
import { Buffer } from 'node:buffer';
// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
If array
is an Array
-like object (that is, one with a length
property of
type number
), it is treated as if it is an array, unless it is a Buffer
or
a Uint8Array
. This means all other TypedArray
variants get treated as an
Array
. To create a Buffer
from the bytes backing a TypedArray
, use
Buffer.copyBytesFrom()
.
A TypeError
will be thrown if array
is not an Array
or another type
appropriate for Buffer.from()
variants.
Buffer.from(array)
and Buffer.from(string)
may also use the internal
Buffer
pool like Buffer.allocUnsafe()
does.
Parameters #
#array: WithImplicitCoercion<ArrayLike<number>>
Return Type #
Overload 2
#BufferConstructor.from(arrayBuffer: WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>,byteOffset?: number,length?: number,): Buffer
This creates a view of the ArrayBuffer
without copying the underlying
memory. For example, when passed a reference to the .buffer
property of a
TypedArray
instance, the newly created Buffer
will share the same
allocated memory as the TypedArray
's underlying ArrayBuffer
.
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Shares memory with `arr`.
const buf = Buffer.from(arr.buffer);
console.log(buf);
// Prints: <Buffer 88 13 a0 0f>
// Changing the original Uint16Array changes the Buffer also.
arr[1] = 6000;
console.log(buf);
// Prints: <Buffer 88 13 70 17>
The optional byteOffset
and length
arguments specify a memory range within
the arrayBuffer
that will be shared by the Buffer
.
import { Buffer } from 'node:buffer';
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2
A TypeError
will be thrown if arrayBuffer
is not an ArrayBuffer
or a
SharedArrayBuffer
or another type appropriate for Buffer.from()
variants.
It is important to remember that a backing ArrayBuffer
can cover a range
of memory that extends beyond the bounds of a TypedArray
view. A new
Buffer
created using the buffer
property of a TypedArray
may extend
beyond the range of the TypedArray
:
import { Buffer } from 'node:buffer';
const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
console.log(arrA.buffer === arrB.buffer); // true
const buf = Buffer.from(arrB.buffer);
console.log(buf);
// Prints: <Buffer 63 64 65 66>
Parameters #
#arrayBuffer: WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>
An ArrayBuffer
, SharedArrayBuffer
, for example the
.buffer
property of a TypedArray
.
#byteOffset: number
Index of first byte to expose. Default: 0
.
#length: number
Number of bytes to expose. Default:
arrayBuffer.byteLength - byteOffset
.
Return Type #
Overload 3
#BufferConstructor.from(string: WithImplicitCoercion<string>,encoding?: BufferEncoding,): Buffer
Creates a new Buffer
containing string
. The encoding
parameter identifies
the character encoding to be used when converting string
into bytes.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// Prints: this is a tést
console.log(buf2.toString());
// Prints: this is a tést
console.log(buf1.toString('latin1'));
// Prints: this is a tést
A TypeError
will be thrown if string
is not a string or another type
appropriate for Buffer.from()
variants.
Buffer.from(string)
may also use the internal Buffer
pool like
Buffer.allocUnsafe()
does.
Parameters #
#string: WithImplicitCoercion<string>
A string to encode.
#encoding: BufferEncoding
The encoding of string
. Default: 'utf8'
.