from
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.
Since
v5.10.0
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>
Since
v5.10.0
Parameters
An ArrayBuffer
, SharedArrayBuffer
, for example the .buffer
property of a TypedArray
.
Index of first byte to expose. Default: 0
.
Number of bytes to expose. Default: arrayBuffer.byteLength - byteOffset
.
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.
Since
v5.10.0
Parameters
A string to encode.
The encoding of string
. Default: 'utf8'
.