Buffer
[Stable: 2 - Stable]
Stable: 2 Stabilité: 2 - Stable
Code source : lib/buffer.js
Les objets Buffer sont utilisés pour représenter une séquence d’octets de longueur fixe. De nombreuses API Node.js prennent en charge les Buffers.
La classe Buffer est une sous-classe de la classe Uint8Array de JavaScript et l’étend avec des méthodes qui couvrent des cas d’utilisation supplémentaires. Les API Node.js acceptent les Uint8Array simples partout où les Buffers sont également pris en charge.
Bien que la classe Buffer soit disponible dans la portée globale, il est toujours recommandé de la référencer explicitement via une instruction import ou require.
import { Buffer } from 'node:buffer';
// Crée un Buffer rempli de zéros de longueur 10.
const buf1 = Buffer.alloc(10);
// Crée un Buffer de longueur 10,
// rempli d’octets qui ont tous la valeur `1`.
const buf2 = Buffer.alloc(10, 1);
// Crée un buffer non initialisé de longueur 10.
// C’est plus rapide que d’appeler Buffer.alloc() mais l’instance Buffer renvoyée
// peut contenir d’anciennes données qui doivent être
// remplacées à l’aide de fill(), write() ou d’autres fonctions qui remplissent le contenu du Buffer.
const buf3 = Buffer.allocUnsafe(10);
// Crée un Buffer contenant les octets [1, 2, 3].
const buf4 = Buffer.from([1, 2, 3]);
// Crée un Buffer contenant les octets [1, 1, 1, 1] – les entrées
// sont toutes tronquées à l’aide de `(value & 255)` pour tenir dans la plage 0–255.
const buf5 = Buffer.from([257, 257.5, -255, '1']);
// Crée un Buffer contenant les octets UTF-8 encodés pour la chaîne 'tést' :
// [0x74, 0xc3, 0xa9, 0x73, 0x74] (en notation hexadécimale)
// [116, 195, 169, 115, 116] (en notation décimale)
const buf6 = Buffer.from('tést');
// Crée un Buffer contenant les octets Latin-1 [0x74, 0xe9, 0x73, 0x74].
const buf7 = Buffer.from('tést', 'latin1');const { Buffer } = require('node:buffer');
// Crée un Buffer rempli de zéros de longueur 10.
const buf1 = Buffer.alloc(10);
// Crée un Buffer de longueur 10,
// rempli d’octets qui ont tous la valeur `1`.
const buf2 = Buffer.alloc(10, 1);
// Crée un buffer non initialisé de longueur 10.
// C’est plus rapide que d’appeler Buffer.alloc() mais l’instance Buffer renvoyée
// peut contenir d’anciennes données qui doivent être
// remplacées à l’aide de fill(), write() ou d’autres fonctions qui remplissent le contenu du Buffer.
const buf3 = Buffer.allocUnsafe(10);
// Crée un Buffer contenant les octets [1, 2, 3].
const buf4 = Buffer.from([1, 2, 3]);
// Crée un Buffer contenant les octets [1, 1, 1, 1] – les entrées
// sont toutes tronquées à l’aide de `(value & 255)` pour tenir dans la plage 0–255.
const buf5 = Buffer.from([257, 257.5, -255, '1']);
// Crée un Buffer contenant les octets UTF-8 encodés pour la chaîne 'tést' :
// [0x74, 0xc3, 0xa9, 0x73, 0x74] (en notation hexadécimale)
// [116, 195, 169, 115, 116] (en notation décimale)
const buf6 = Buffer.from('tést');
// Crée un Buffer contenant les octets Latin-1 [0x74, 0xe9, 0x73, 0x74].
const buf7 = Buffer.from('tést', 'latin1');Buffers et encodages de caractères
[Historique]
| Version | Modifications |
|---|---|
| v15.7.0, v14.18.0 | Introduction de l'encodage base64url. |
| v6.4.0 | Introduction de latin1 comme alias de binary. |
| v5.0.0 | Suppression des encodages obsolètes raw et raws. |
Lors de la conversion entre Buffer et chaînes de caractères, un encodage de caractères peut être spécifié. Si aucun encodage de caractères n'est spécifié, UTF-8 sera utilisé par défaut.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('hello world', 'utf8');
console.log(buf.toString('hex'));
// Affiche : 68656c6c6f20776f726c64
console.log(buf.toString('base64'));
// Affiche : aGVsbG8gd29ybGQ=
console.log(Buffer.from('fhqwhgads', 'utf8'));
// Affiche : <Buffer 66 68 71 77 68 67 61 64 73>
console.log(Buffer.from('fhqwhgads', 'utf16le'));
// Affiche : <Buffer 66 00 68 00 71 00 77 00 68 00 67 00 61 00 64 00 73 00>const { Buffer } = require('node:buffer');
const buf = Buffer.from('hello world', 'utf8');
console.log(buf.toString('hex'));
// Affiche : 68656c6c6f20776f726c64
console.log(buf.toString('base64'));
// Affiche : aGVsbG8gd29ybGQ=
console.log(Buffer.from('fhqwhgads', 'utf8'));
// Affiche : <Buffer 66 68 71 77 68 67 61 64 73>
console.log(Buffer.from('fhqwhgads', 'utf16le'));
// Affiche : <Buffer 66 00 68 00 71 00 77 00 68 00 67 00 61 00 64 00 73 00>Les buffers Node.js acceptent toutes les variations de casse des chaînes d'encodage qu'ils reçoivent. Par exemple, UTF-8 peut être spécifié comme 'utf8', 'UTF8' ou 'uTf8'.
Les encodages de caractères actuellement pris en charge par Node.js sont les suivants :
'utf8'(alias :'utf-8') : Caractères Unicode encodés sur plusieurs octets. De nombreuses pages Web et autres formats de documents utilisent UTF-8. Il s'agit de l'encodage de caractères par défaut. Lors du décodage d'unBufferen une chaîne qui ne contient pas exclusivement des données UTF-8 valides, le caractère de remplacement UnicodeU+FFFD� sera utilisé pour représenter ces erreurs.'utf16le'(alias :'utf-16le') : Caractères Unicode encodés sur plusieurs octets. Contrairement à'utf8', chaque caractère de la chaîne sera encodé à l'aide de 2 ou 4 octets. Node.js prend uniquement en charge la variante petit-boutiste de UTF-16.'latin1': Latin-1 signifie ISO-8859-1. Cet encodage de caractères ne prend en charge que les caractères Unicode deU+0000àU+00FF. Chaque caractère est encodé à l'aide d'un seul octet. Les caractères qui ne rentrent pas dans cette plage sont tronqués et seront mappés à des caractères de cette plage.
La conversion d'un Buffer en une chaîne à l'aide de l'un des éléments ci-dessus est appelée décodage, et la conversion d'une chaîne en un Buffer est appelée encodage.
Node.js prend également en charge les encodages binaire-texte suivants. Pour les encodages binaire-texte, la convention de nommage est inversée : la conversion d'un Buffer en une chaîne est généralement appelée encodage, et la conversion d'une chaîne en un Buffer est appelée décodage.
'base64': Encodage Base64. Lors de la création d'unBufferà partir d'une chaîne, cet encodage acceptera également correctement « l'alphabet sûr pour les URL et les noms de fichiers », comme spécifié dans RFC 4648, section 5. Les caractères d'espacement tels que les espaces, les tabulations et les nouvelles lignes contenus dans la chaîne encodée en base64 sont ignorés.'base64url': Encodage base64url comme spécifié dans RFC 4648, section 5. Lors de la création d'unBufferà partir d'une chaîne, cet encodage acceptera également correctement les chaînes encodées en base64 standard. Lors de l'encodage d'unBufferen une chaîne, cet encodage omettra le remplissage.'hex': Encode chaque octet en deux caractères hexadécimaux. Une troncature de données peut se produire lors du décodage de chaînes qui ne sont pas exclusivement constituées d'un nombre pair de caractères hexadécimaux. Voir ci-dessous pour un exemple.
Les encodages de caractères hérités suivants sont également pris en charge :
'ascii': Pour les données ASCII 7 bits uniquement. Lors de l'encodage d'une chaîne dans unBuffer, cela équivaut à utiliser'latin1'. Lors du décodage d'unBufferen une chaîne, l'utilisation de cet encodage désactivera en outre le bit le plus élevé de chaque octet avant le décodage en tant que'latin1'. En général, il ne devrait y avoir aucune raison d'utiliser cet encodage, car'utf8'(ou, si l'on sait que les données sont toujours uniquement ASCII,'latin1') sera un meilleur choix lors de l'encodage ou du décodage de texte uniquement ASCII. Il est uniquement fourni pour la compatibilité héritée.'binary': Alias pour'latin1'. Le nom de cet encodage peut être très trompeur, car tous les encodages répertoriés ici convertissent entre des chaînes et des données binaires. Pour la conversion entre les chaînes et lesBuffer,'utf8'est généralement le bon choix.'ucs2','ucs-2': Alias de'utf16le'. UCS-2 désignait auparavant une variante d'UTF-16 qui ne prenait pas en charge les caractères dont les points de code étaient supérieurs à U+FFFF. Dans Node.js, ces points de code sont toujours pris en charge.
import { Buffer } from 'node:buffer';
Buffer.from('1ag123', 'hex');
// Affiche <Buffer 1a>, données tronquées lorsque la première valeur non hexadécimale
// ('g') est rencontrée.
Buffer.from('1a7', 'hex');
// Affiche <Buffer 1a>, données tronquées lorsque les données se terminent par un seul chiffre ('7').
Buffer.from('1634', 'hex');
// Affiche <Buffer 16 34>, toutes les données sont représentées.const { Buffer } = require('node:buffer');
Buffer.from('1ag123', 'hex');
// Affiche <Buffer 1a>, données tronquées lorsque la première valeur non hexadécimale
// ('g') est rencontrée.
Buffer.from('1a7', 'hex');
// Affiche <Buffer 1a>, données tronquées lorsque les données se terminent par un seul chiffre ('7').
Buffer.from('1634', 'hex');
// Affiche <Buffer 16 34>, toutes les données sont représentées.Les navigateurs Web modernes suivent le WHATWG Encoding Standard qui alias 'latin1' et 'ISO-8859-1' en 'win-1252'. Cela signifie que lors d'une action telle que http.get(), si le jeu de caractères renvoyé est l'un de ceux répertoriés dans la spécification WHATWG, il est possible que le serveur ait en fait renvoyé des données encodées en 'win-1252', et l'utilisation de l'encodage 'latin1' peut décoder incorrectement les caractères.
Buffers et TypedArrays
[Historique]
| Version | Modifications |
|---|---|
| v3.0.0 | La classe Buffer hérite désormais de Uint8Array. |
Les instances de Buffer sont également des instances JavaScript de Uint8Array et TypedArray. Toutes les méthodes de TypedArray sont disponibles sur les Buffer. Il existe cependant de subtiles incompatibilités entre l'API Buffer et l'API TypedArray.
En particulier :
- Alors que
TypedArray.prototype.slice()crée une copie d'une partie duTypedArray,Buffer.prototype.slice()crée une vue sur leBufferexistant sans copie. Ce comportement peut être surprenant, et n'existe que pour la compatibilité avec l'ancien code.TypedArray.prototype.subarray()peut être utilisé pour obtenir le comportement deBuffer.prototype.slice()à la fois sur lesBufferet les autresTypedArray, et il est préférable de l'utiliser. buf.toString()est incompatible avec son équivalentTypedArray.- Un certain nombre de méthodes, par exemple
buf.indexOf(), prennent en charge des arguments supplémentaires.
Il existe deux façons de créer de nouvelles instances de TypedArray à partir d'un Buffer :
- Passer un
Bufferà un constructeurTypedArraycopiera le contenu duBuffer, interprété comme un tableau d'entiers, et non comme une séquence d'octets du type cible.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4]);
const uint32array = new Uint32Array(buf);
console.log(uint32array);
// Prints: Uint32Array(4) [ 1, 2, 3, 4 ]const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3, 4]);
const uint32array = new Uint32Array(buf);
console.log(uint32array);
// Prints: Uint32Array(4) [ 1, 2, 3, 4 ]- Passer le
ArrayBuffersous-jacent duBuffercréera unTypedArrayqui partagera sa mémoire avec leBuffer.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('hello', 'utf16le');
const uint16array = new Uint16Array(
buf.buffer,
buf.byteOffset,
buf.length / Uint16Array.BYTES_PER_ELEMENT);
console.log(uint16array);
// Prints: Uint16Array(5) [ 104, 101, 108, 108, 111 ]const { Buffer } = require('node:buffer');
const buf = Buffer.from('hello', 'utf16le');
const uint16array = new Uint16Array(
buf.buffer,
buf.byteOffset,
buf.length / Uint16Array.BYTES_PER_ELEMENT);
console.log(uint16array);
// Prints: Uint16Array(5) [ 104, 101, 108, 108, 111 ]Il est possible de créer un nouveau Buffer qui partage la même mémoire allouée qu'une instance TypedArray en utilisant la propriété .buffer de l'objet TypedArray de la même manière. Buffer.from() se comporte comme new Uint8Array() dans ce contexte.
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Copies the contents of `arr`.
const buf1 = Buffer.from(arr);
// Shares memory with `arr`.
const buf2 = Buffer.from(arr.buffer);
console.log(buf1);
// Prints: <Buffer 88 a0>
console.log(buf2);
// Prints: <Buffer 88 13 a0 0f>
arr[1] = 6000;
console.log(buf1);
// Prints: <Buffer 88 a0>
console.log(buf2);
// Prints: <Buffer 88 13 70 17>const { Buffer } = require('node:buffer');
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Copies the contents of `arr`.
const buf1 = Buffer.from(arr);
// Shares memory with `arr`.
const buf2 = Buffer.from(arr.buffer);
console.log(buf1);
// Prints: <Buffer 88 a0>
console.log(buf2);
// Prints: <Buffer 88 13 a0 0f>
arr[1] = 6000;
console.log(buf1);
// Prints: <Buffer 88 a0>
console.log(buf2);
// Prints: <Buffer 88 13 70 17>Lors de la création d'un Buffer à l'aide de la propriété .buffer d'un TypedArray, il est possible d'utiliser uniquement une partie du ArrayBuffer sous-jacent en transmettant les paramètres byteOffset et length.
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(20);
const buf = Buffer.from(arr.buffer, 0, 16);
console.log(buf.length);
// Prints: 16const { Buffer } = require('node:buffer');
const arr = new Uint16Array(20);
const buf = Buffer.from(arr.buffer, 0, 16);
console.log(buf.length);
// Prints: 16Les signatures et implémentations de Buffer.from() et TypedArray.from() sont différentes. Plus précisément, les variantes TypedArray acceptent un deuxième argument qui est une fonction de mappage qui est appelée sur chaque élément du tableau typé :
TypedArray.from(source[, mapFn[, thisArg]])
La méthode Buffer.from(), cependant, ne prend pas en charge l'utilisation d'une fonction de mappage :
Buffer.from(array)Buffer.from(buffer)Buffer.from(arrayBuffer[, byteOffset[, length]])Buffer.from(string[, encoding])
Tampons et itération
Les instances de Buffer peuvent être parcourues à l'aide de la syntaxe for..of :
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3]);
for (const b of buf) {
console.log(b);
}
// Affiche :
// 1
// 2
// 3const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3]);
for (const b of buf) {
console.log(b);
}
// Affiche :
// 1
// 2
// 3De plus, les méthodes buf.values(), buf.keys() et buf.entries() peuvent être utilisées pour créer des itérateurs.
Classe : Blob
[Historique]
| Version | Modifications |
|---|---|
| v18.0.0, v16.17.0 | N'est plus expérimental. |
| v15.7.0, v14.18.0 | Ajouté dans : v15.7.0, v14.18.0 |
Un Blob encapsule des données brutes immuables qui peuvent être partagées en toute sécurité entre plusieurs threads worker.
new buffer.Blob([sources[, options]])
[Historique]
| Version | Modifications |
|---|---|
| v16.7.0 | Ajout de l'option standard endings pour remplacer les fins de ligne, et suppression de l'option non standard encoding. |
| v15.7.0, v14.18.0 | Ajouté dans : v15.7.0, v14.18.0 |
sources<string[]> | <ArrayBuffer[]> | <TypedArray[]> | <DataView[]> | <Blob[]> Un tableau de chaînes de caractères, <ArrayBuffer>, <TypedArray>, <DataView>, ou d'objets <Blob>, ou tout mélange de ces objets, qui seront stockés dans leBlob.options<Object>endings<string> Soit'transparent'ou'native'. Lorsque la valeur est définie sur'native', les fins de ligne dans les parties de la source de la chaîne seront converties en fin de ligne native de la plateforme, comme spécifié parrequire('node:os').EOL.type<string> Le type de contenu Blob. L'intention est quetypetransmette le type de média MIME des données, mais aucune validation du format de type n'est effectuée.
Crée un nouvel objet Blob contenant une concaténation des sources données.
Les sources <ArrayBuffer>, <TypedArray>, <DataView> et <Buffer> sont copiées dans le "Blob" et peuvent donc être modifiées en toute sécurité après la création du "Blob".
Les sources de chaînes sont encodées en tant que séquences d'octets UTF-8 et copiées dans le Blob. Les paires de substitution non appariées dans chaque partie de la chaîne seront remplacées par des caractères de remplacement Unicode U+FFFD.
blob.arrayBuffer()
Ajouté dans : v15.7.0, v14.18.0
- Retourne : <Promise>
Renvoie une promesse qui se réalise avec un <ArrayBuffer> contenant une copie des données Blob.
blob.bytes()
Ajouté dans : v22.3.0, v20.16.0
La méthode blob.bytes() renvoie l’octet de l’objet Blob sous forme de Promise<Uint8Array>.
const blob = new Blob(['hello']);
blob.bytes().then((bytes) => {
console.log(bytes); // Affiche : Uint8Array(5) [ 104, 101, 108, 108, 111 ]
});blob.size
Ajouté dans : v15.7.0, v14.18.0
La taille totale du Blob en octets.
blob.slice([start[, end[, type]]])
Ajouté dans : v15.7.0, v14.18.0
start<number> L’index de départ.end<number> L’index de fin.type<string> Le content-type pour le nouveauBlob
Crée et renvoie un nouveau Blob contenant un sous-ensemble des données de cet objet Blob. Le Blob original n’est pas modifié.
blob.stream()
Ajouté dans : v16.7.0
- Retourne : <ReadableStream>
Renvoie un nouveau ReadableStream qui permet de lire le contenu du Blob.
blob.text()
Ajouté dans : v15.7.0, v14.18.0
- Retourne : <Promise>
Renvoie une promesse qui se réalise avec le contenu du Blob décodé comme une chaîne UTF-8.
blob.type
Ajouté dans : v15.7.0, v14.18.0
- Type : <string>
Le content-type du Blob.
Objets Blob et MessageChannel
Une fois qu'un objet <Blob> est créé, il peut être envoyé via MessagePort vers plusieurs destinations sans transfert ni copie immédiate des données. Les données contenues dans le Blob ne sont copiées que lorsque les méthodes arrayBuffer() ou text() sont appelées.
import { Blob } from 'node:buffer';
import { setTimeout as delay } from 'node:timers/promises';
const blob = new Blob(['hello there']);
const mc1 = new MessageChannel();
const mc2 = new MessageChannel();
mc1.port1.onmessage = async ({ data }) => {
console.log(await data.arrayBuffer());
mc1.port1.close();
};
mc2.port1.onmessage = async ({ data }) => {
await delay(1000);
console.log(await data.arrayBuffer());
mc2.port1.close();
};
mc1.port2.postMessage(blob);
mc2.port2.postMessage(blob);
// The Blob is still usable after posting.
blob.text().then(console.log);const { Blob } = require('node:buffer');
const { setTimeout: delay } = require('node:timers/promises');
const blob = new Blob(['hello there']);
const mc1 = new MessageChannel();
const mc2 = new MessageChannel();
mc1.port1.onmessage = async ({ data }) => {
console.log(await data.arrayBuffer());
mc1.port1.close();
};
mc2.port1.onmessage = async ({ data }) => {
await delay(1000);
console.log(await data.arrayBuffer());
mc2.port1.close();
};
mc1.port2.postMessage(blob);
mc2.port2.postMessage(blob);
// The Blob is still usable after posting.
blob.text().then(console.log);Classe : Buffer
La classe Buffer est un type global pour traiter directement les données binaires. Il peut être construit de différentes manières.
Méthode statique : Buffer.alloc(size[, fill[, encoding]])
[Historique]
| Version | Modifications |
|---|---|
| v20.0.0 | Lance ERR_INVALID_ARG_TYPE ou ERR_OUT_OF_RANGE au lieu de ERR_INVALID_ARG_VALUE pour les arguments d'entrée invalides. |
| v15.0.0 | Lance ERR_INVALID_ARG_VALUE au lieu de ERR_INVALID_OPT_VALUE pour les arguments d'entrée invalides. |
| v10.0.0 | Tenter de remplir un tampon de longueur non nulle avec un tampon de longueur nulle déclenche une exception. |
| v10.0.0 | Spécifier une chaîne invalide pour fill déclenche une exception. |
| v8.9.3 | Spécifier une chaîne invalide pour fill entraîne maintenant un tampon rempli de zéros. |
| v5.10.0 | Ajouté dans : v5.10.0 |
size<integer> La longueur souhaitée du nouveauBuffer.fill<string> | <Buffer> | <Uint8Array> | <integer> Une valeur pour pré-remplir le nouveauBufferavec. Par défaut :0.encoding<string> Sifillest une chaîne, voici son encodage. Par défaut :'utf8'.- Retourne : <Buffer>
Alloue un nouveau Buffer de size octets. Si fill est undefined, le Buffer sera rempli de zéros.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00>const { Buffer } = require('node:buffer');
const buf = Buffer.alloc(5);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00>Si size est supérieur à buffer.constants.MAX_LENGTH ou inférieur à 0, ERR_OUT_OF_RANGE est levée.
Si fill est spécifié, le Buffer alloué sera initialisé en appelant buf.fill(fill).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5, 'a');
console.log(buf);
// Prints: <Buffer 61 61 61 61 61>const { Buffer } = require('node:buffer');
const buf = Buffer.alloc(5, 'a');
console.log(buf);
// Prints: <Buffer 61 61 61 61 61>Si fill et encoding sont spécifiés, le Buffer alloué sera initialisé en appelant buf.fill(fill, encoding).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>const { Buffer } = require('node:buffer');
const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>Appeler Buffer.alloc() peut être sensiblement plus lent que l’alternative Buffer.allocUnsafe(), mais garantit que le contenu de l’instance Buffer nouvellement créée ne contiendra jamais de données sensibles provenant d’allocations précédentes, y compris les données qui n’auraient pas été allouées pour les Buffers.
Une TypeError sera levée si size n’est pas un nombre.
Méthode statique : Buffer.allocUnsafe(size)
[Historique]
| Version | Modifications |
|---|---|
| v20.0.0 | Lance ERR_INVALID_ARG_TYPE ou ERR_OUT_OF_RANGE au lieu de ERR_INVALID_ARG_VALUE pour les arguments d'entrée non valides. |
| v15.0.0 | Lance ERR_INVALID_ARG_VALUE au lieu de ERR_INVALID_OPT_VALUE pour les arguments d'entrée non valides. |
| v7.0.0 | Passer une size négative lèvera désormais une erreur. |
| v5.10.0 | Ajouté dans : v5.10.0 |
Alloue un nouveau Buffer de size octets. Si size est supérieur à buffer.constants.MAX_LENGTH ou inférieur à 0, ERR_OUT_OF_RANGE est levée.
La mémoire sous-jacente des instances Buffer créées de cette manière n'est pas initialisée. Le contenu du Buffer nouvellement créé est inconnu et peut contenir des données sensibles. Utilisez plutôt Buffer.alloc() pour initialiser les instances Buffer avec des zéros.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(10);
console.log(buf);
// Affiche (le contenu peut varier) : <Buffer a0 8b 28 3f 01 00 00 00 50 32>
buf.fill(0);
console.log(buf);
// Affiche : <Buffer 00 00 00 00 00 00 00 00 00 00>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(10);
console.log(buf);
// Affiche (le contenu peut varier) : <Buffer a0 8b 28 3f 01 00 00 00 50 32>
buf.fill(0);
console.log(buf);
// Affiche : <Buffer 00 00 00 00 00 00 00 00 00 00>Un TypeError sera levé si size n'est pas un nombre.
Le module Buffer pré-alloue une instance Buffer interne de la taille Buffer.poolSize qui est utilisée comme pool pour l'allocation rapide de nouvelles instances Buffer créées en utilisant Buffer.allocUnsafe(), Buffer.from(array), Buffer.from(string) et Buffer.concat() uniquement lorsque size est inférieur à Buffer.poolSize \>\>\> 1 (partie entière de Buffer.poolSize divisée par deux).
L'utilisation de ce pool de mémoire interne pré-alloué est une différence essentielle entre l'appel de Buffer.alloc(size, fill) et Buffer.allocUnsafe(size).fill(fill). Plus précisément, Buffer.alloc(size, fill) n'utilisera jamais le pool Buffer interne, tandis que Buffer.allocUnsafe(size).fill(fill) utilisera le pool Buffer interne si size est inférieur ou égal à la moitié de Buffer.poolSize. La différence est subtile, mais peut être importante lorsqu'une application nécessite les performances supplémentaires que Buffer.allocUnsafe() fournit.
Méthode statique : Buffer.allocUnsafeSlow(size)
[Historique]
| Version | Modifications |
|---|---|
| v20.0.0 | Lancer ERR_INVALID_ARG_TYPE ou ERR_OUT_OF_RANGE au lieu de ERR_INVALID_ARG_VALUE pour les arguments d'entrée non valides. |
| v15.0.0 | Lancer ERR_INVALID_ARG_VALUE au lieu de ERR_INVALID_OPT_VALUE pour les arguments d'entrée non valides. |
| v5.12.0 | Ajouté dans : v5.12.0 |
Alloue un nouveau Buffer de size octets. Si size est supérieur à buffer.constants.MAX_LENGTH ou inférieur à 0, ERR_OUT_OF_RANGE est émis. Un Buffer de longueur zéro est créé si size est 0.
La mémoire sous-jacente des instances Buffer créées de cette manière n'est pas initialisée. Le contenu du Buffer nouvellement créé est inconnu et peut contenir des données sensibles. Utilisez buf.fill(0) pour initialiser ces instances Buffer avec des zéros.
Lorsque vous utilisez Buffer.allocUnsafe() pour allouer de nouvelles instances Buffer, les allocations inférieures à Buffer.poolSize \>\>\> 1 (4 KiB lorsque la poolSize par défaut est utilisée) sont extraites d'un seul Buffer pré-alloué. Cela permet aux applications d'éviter la surcharge de garbage collection liée à la création de nombreuses instances Buffer allouées individuellement. Cette approche améliore à la fois les performances et l'utilisation de la mémoire en éliminant la nécessité de suivre et de nettoyer autant d'objets ArrayBuffer individuels.
Cependant, dans le cas où un développeur pourrait avoir besoin de conserver un petit bloc de mémoire d'un pool pendant une durée indéterminée, il peut être approprié de créer une instance Buffer non groupée à l'aide de Buffer.allocUnsafeSlow() puis d'en copier les bits pertinents.
import { Buffer } from 'node:buffer';
// Besoin de conserver quelques petits blocs de mémoire.
const store = [];
socket.on('readable', () => {
let data;
while (null !== (data = readable.read())) {
// Allouer pour les données conservées.
const sb = Buffer.allocUnsafeSlow(10);
// Copier les données dans la nouvelle allocation.
data.copy(sb, 0, 0, 10);
store.push(sb);
}
});const { Buffer } = require('node:buffer');
// Besoin de conserver quelques petits blocs de mémoire.
const store = [];
socket.on('readable', () => {
let data;
while (null !== (data = readable.read())) {
// Allouer pour les données conservées.
const sb = Buffer.allocUnsafeSlow(10);
// Copier les données dans la nouvelle allocation.
data.copy(sb, 0, 0, 10);
store.push(sb);
}
});Un TypeError sera émis si size n'est pas un nombre.
Méthode statique : Buffer.byteLength(string[, encoding])
[Historique]
| Version | Modifications |
|---|---|
| v7.0.0 | Le passage d’une entrée non valide lève désormais une erreur. |
| v5.10.0 | Le paramètre string peut désormais être n’importe quel TypedArray, DataView ou ArrayBuffer. |
| v0.1.90 | Ajoutée dans : v0.1.90 |
string<string> | <Buffer> | <TypedArray> | <DataView> | <ArrayBuffer> | <SharedArrayBuffer> Une valeur pour calculer la longueur de.encoding<string> Sistringest une chaîne de caractères, il s’agit de son encodage. Par défaut :'utf8'.- Retourne : <integer> Le nombre d’octets contenus dans
string.
Retourne la longueur en octets d’une chaîne de caractères lorsqu’elle est encodée à l’aide de encoding. Ce n’est pas la même chose que String.prototype.length, qui ne tient pas compte de l’encodage utilisé pour convertir la chaîne de caractères en octets.
Pour 'base64', 'base64url' et 'hex', cette fonction suppose une entrée valide. Pour les chaînes de caractères qui contiennent des données non encodées en base64/hexadécimal (par exemple, des espaces blancs), la valeur de retour peut être supérieure à la longueur d’un Buffer créé à partir de la chaîne de caractères.
import { Buffer } from 'node:buffer';
const str = '\u00bd + \u00bc = \u00be';
console.log(`${str}: ${str.length} caractères, ` +
`${Buffer.byteLength(str, 'utf8')} octets`);
// Prints: ½ + ¼ = ¾: 9 caractères, 12 octetsconst { Buffer } = require('node:buffer');
const str = '\u00bd + \u00bc = \u00be';
console.log(`${str}: ${str.length} caractères, ` +
`${Buffer.byteLength(str, 'utf8')} octets`);
// Prints: ½ + ¼ = ¾: 9 caractères, 12 octetsLorsque string est un Buffer/DataView/TypedArray/ArrayBuffer/ SharedArrayBuffer, la longueur en octets signalée par .byteLength est retournée.
Méthode statique : Buffer.compare(buf1, buf2)
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | Les arguments peuvent désormais être des Uint8Array. |
| v0.11.13 | Ajouté dans : v0.11.13 |
buf1<Buffer> | <Uint8Array>buf2<Buffer> | <Uint8Array>- Retourne : <integer> Soit
-1,0, ou1, en fonction du résultat de la comparaison. Voirbuf.compare()pour plus de détails.
Compare buf1 à buf2, généralement dans le but de trier des tableaux d'instances Buffer. Ceci équivaut à appeler buf1.compare(buf2).
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('1234');
const buf2 = Buffer.from('0123');
const arr = [buf1, buf2];
console.log(arr.sort(Buffer.compare));
// Affiche : [ <Buffer 30 31 32 33>, <Buffer 31 32 33 34> ]
// (Ce résultat est égal à : [buf2, buf1].)const { Buffer } = require('node:buffer');
const buf1 = Buffer.from('1234');
const buf2 = Buffer.from('0123');
const arr = [buf1, buf2];
console.log(arr.sort(Buffer.compare));
// Affiche : [ <Buffer 30 31 32 33>, <Buffer 31 32 33 34> ]
// (Ce résultat est égal à : [buf2, buf1].)Méthode statique : Buffer.concat(list[, totalLength])
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | Les éléments de list peuvent désormais être des Uint8Array. |
| v0.7.11 | Ajouté dans : v0.7.11 |
list<Buffer[]> | <Uint8Array[]> Liste des instancesBufferouUint8Arrayà concaténer.totalLength<integer> Longueur totale des instancesBufferdanslistune fois concaténées.- Retourne : <Buffer>
Retourne un nouveau Buffer qui est le résultat de la concaténation de toutes les instances Buffer dans la list.
Si la liste ne contient aucun élément, ou si la totalLength est 0, un nouveau Buffer de longueur nulle est renvoyé.
Si totalLength n'est pas fourni, il est calculé à partir des instances Buffer dans list en additionnant leurs longueurs.
Si totalLength est fourni, il est converti en un entier non signé. Si la longueur combinée des Buffers dans list dépasse totalLength, le résultat est tronqué à totalLength. Si la longueur combinée des Buffers dans list est inférieure à totalLength, l'espace restant est rempli de zéros.
import { Buffer } from 'node:buffer';
// Créer un seul `Buffer` à partir d'une liste de trois instances `Buffer`.
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);
// Affiche : 42
const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
console.log(bufA);
// Affiche : <Buffer 00 00 00 00 ...>
console.log(bufA.length);
// Affiche : 42const { Buffer } = require('node:buffer');
// Créer un seul `Buffer` à partir d'une liste de trois instances `Buffer`.
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);
// Affiche : 42
const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
console.log(bufA);
// Affiche : <Buffer 00 00 00 00 ...>
console.log(bufA.length);
// Affiche : 42Buffer.concat() peut également utiliser le pool Buffer interne comme le fait Buffer.allocUnsafe().
Méthode statique : Buffer.copyBytesFrom(view[, offset[, length]])
Ajoutée dans : v19.8.0, v18.16.0
view<TypedArray> Le <TypedArray> à copier.offset<integer> Le décalage de début dansview. Par défaut : :0.length<integer> Le nombre d'éléments deviewà copier. Par défaut :view.length - offset.- Retourne : <Buffer>
Copie la mémoire sous-jacente de view dans un nouveau Buffer.
const u16 = new Uint16Array([0, 0xffff]);
const buf = Buffer.copyBytesFrom(u16, 1, 1);
u16[1] = 0;
console.log(buf.length); // 2
console.log(buf[0]); // 255
console.log(buf[1]); // 255Méthode statique : Buffer.from(array)
Ajoutée dans : v5.10.0
array<integer[]>- Retourne : <Buffer>
Alloue un nouveau Buffer en utilisant un array d'octets dans la plage 0 – 255. Les entrées de tableau en dehors de cette plage seront tronquées pour s'y intégrer.
import { Buffer } from 'node:buffer';
// Crée un nouveau Buffer contenant les octets UTF-8 de la chaîne 'buffer'.
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);const { Buffer } = require('node:buffer');
// Crée un nouveau Buffer contenant les octets UTF-8 de la chaîne 'buffer'.
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);Si array est un objet de type Array (c'est-à-dire un objet avec une propriété length de type number), il est traité comme s'il s'agissait d'un tableau, sauf s'il s'agit d'un Buffer ou d'un Uint8Array. Cela signifie que toutes les autres variantes de TypedArray sont traitées comme un Array. Pour créer un Buffer à partir des octets qui sauvegardent un TypedArray, utilisez Buffer.copyBytesFrom().
Une erreur TypeError sera levée si array n'est pas un Array ou un autre type approprié pour les variantes Buffer.from().
Buffer.from(array) et Buffer.from(string) peuvent également utiliser le pool Buffer interne comme le fait Buffer.allocUnsafe().
Méthode statique : Buffer.from(arrayBuffer[, byteOffset[, length]])
Ajoutée dans : v5.10.0
arrayBuffer<ArrayBuffer> | <SharedArrayBuffer> UnArrayBuffer,SharedArrayBuffer, par exemple la propriété.bufferd’unTypedArray.byteOffset<integer> Indice du premier octet à exposer. Par défaut :0.length<integer> Nombre d’octets à exposer. Par défaut :arrayBuffer.byteLength - byteOffset.- Retourne : <Buffer>
Ceci crée une vue du ArrayBuffer sans copier la mémoire sous-jacente. Par exemple, lorsqu’une référence à la propriété .buffer d’une instance TypedArray est transmise, le Buffer nouvellement créé partagera la même mémoire allouée que le ArrayBuffer sous-jacent de TypedArray.
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>const { Buffer } = require('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>Les arguments optionnels byteOffset et length spécifient une plage de mémoire dans arrayBuffer qui sera partagée par le Buffer.
import { Buffer } from 'node:buffer';
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2const { Buffer } = require('node:buffer');
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2Une TypeError sera levée si arrayBuffer n’est pas un ArrayBuffer ou un SharedArrayBuffer ou un autre type approprié pour les variantes Buffer.from().
Il est important de se rappeler qu’un ArrayBuffer de stockage peut couvrir une plage de mémoire qui s’étend au-delà des limites d’une vue TypedArray. Un nouveau Buffer créé à l’aide de la propriété buffer d’un TypedArray peut s’étendre au-delà de la plage du 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>const { Buffer } = require('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>Méthode statique : Buffer.from(buffer)
Ajoutée dans : v5.10.0
buffer<Buffer> | <Uint8Array> UnBufferexistant ouUint8Arrayà partir duquel copier les données.- Retourne : <Buffer>
Copie les données buffer passées sur une nouvelle instance Buffer.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('buffer');
const buf2 = Buffer.from(buf1);
buf1[0] = 0x61;
console.log(buf1.toString());
// Affiche : auffer
console.log(buf2.toString());
// Affiche : bufferconst { Buffer } = require('node:buffer');
const buf1 = Buffer.from('buffer');
const buf2 = Buffer.from(buf1);
buf1[0] = 0x61;
console.log(buf1.toString());
// Affiche : auffer
console.log(buf2.toString());
// Affiche : bufferUne TypeError sera levée si buffer n’est pas un Buffer ou un autre type approprié pour les variantes Buffer.from().
Méthode statique : Buffer.from(object[, offsetOrEncoding[, length]])
Ajoutée dans : v8.2.0
object<Object> Un objet prenant en chargeSymbol.toPrimitiveouvalueOf().offsetOrEncoding<integer> | <string> Un décalage d’octet ou un encodage.length<integer> Une longueur.- Retourne : <Buffer>
Pour les objets dont la fonction valueOf() renvoie une valeur qui n’est pas strictement égale à object, renvoie Buffer.from(object.valueOf(), offsetOrEncoding, length).
import { Buffer } from 'node:buffer';
const buf = Buffer.from(new String('this is a test'));
// Affiche : <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>const { Buffer } = require('node:buffer');
const buf = Buffer.from(new String('this is a test'));
// Affiche : <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>Pour les objets qui prennent en charge Symbol.toPrimitive, renvoie Buffer.from(object[Symbol.toPrimitive]('string'), offsetOrEncoding).
import { Buffer } from 'node:buffer';
class Foo {
[Symbol.toPrimitive]() {
return 'this is a test';
}
}
const buf = Buffer.from(new Foo(), 'utf8');
// Affiche : <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>const { Buffer } = require('node:buffer');
class Foo {
[Symbol.toPrimitive]() {
return 'this is a test';
}
}
const buf = Buffer.from(new Foo(), 'utf8');
// Affiche : <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>Une TypeError sera levée si object n’a pas les méthodes mentionnées ou n’est pas d’un autre type approprié pour les variantes Buffer.from().
Méthode statique : Buffer.from(string[, encoding])
Ajouté dans : v5.10.0
string<string> Une chaîne de caractères à encoder.encoding<string> L’encodage destring. Par défaut :'utf8'.- Retourne : <Buffer>
Crée un nouveau Buffer contenant string. Le paramètre encoding identifie l’encodage de caractères à utiliser lors de la conversion de string en octets.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// Affiche : this is a tést
console.log(buf2.toString());
// Affiche : this is a tést
console.log(buf1.toString('latin1'));
// Affiche : this is a téstconst { Buffer } = require('node:buffer');
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// Affiche : this is a tést
console.log(buf2.toString());
// Affiche : this is a tést
console.log(buf1.toString('latin1'));
// Affiche : this is a téstUne erreur TypeError sera levée si string n’est pas une chaîne de caractères ou un autre type approprié pour les variantes Buffer.from().
Buffer.from(string) peut également utiliser le pool Buffer interne comme le fait Buffer.allocUnsafe().
Méthode statique : Buffer.isBuffer(obj)
Ajouté dans la version : v0.1.101
Renvoie true si obj est un Buffer, false sinon.
import { Buffer } from 'node: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)); // falseconst { Buffer } = require('node: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)); // falseMéthode statique : Buffer.isEncoding(encoding)
Ajouté dans : v0.9.1
Renvoie true si encoding est le nom d’un encodage de caractères pris en charge, ou false sinon.
import { Buffer } from 'node:buffer';
console.log(Buffer.isEncoding('utf8'));
// Affiche : true
console.log(Buffer.isEncoding('hex'));
// Affiche : true
console.log(Buffer.isEncoding('utf/8'));
// Affiche : false
console.log(Buffer.isEncoding(''));
// Affiche : falseconst { Buffer } = require('node:buffer');
console.log(Buffer.isEncoding('utf8'));
// Affiche : true
console.log(Buffer.isEncoding('hex'));
// Affiche : true
console.log(Buffer.isEncoding('utf/8'));
// Affiche : false
console.log(Buffer.isEncoding(''));
// Affiche : falsePropriété de classe : Buffer.poolSize
Ajouté dans : v0.11.3
- <integer> Par défaut :
8192
C’est la taille (en octets) des instances Buffer internes préallouées utilisées pour le regroupement. Cette valeur peut être modifiée.
buf[index]
index<integer>
L’opérateur d’index [index] peut être utilisé pour obtenir et définir l’octet à la position index dans buf. Les valeurs font référence à des octets individuels, de sorte que la plage de valeurs autorisée est comprise entre 0x00 et 0xFF (hexadécimal) ou entre 0 et 255 (décimal).
Cet opérateur est hérité de Uint8Array, son comportement sur les accès hors limites est donc le même que Uint8Array. En d’autres termes, buf[index] renvoie undefined lorsque index est négatif ou supérieur ou égal à buf.length, et buf[index] = value ne modifie pas le tampon si index est négatif ou \>= buf.length.
import { Buffer } from 'node:buffer';
// Copie une chaîne ASCII dans un `Buffer` un octet à la fois.
// (Cela ne fonctionne que pour les chaînes ASCII uniquement. En général, il faut utiliser
// `Buffer.from()` pour effectuer cette conversion.)
const str = 'Node.js';
const buf = Buffer.allocUnsafe(str.length);
for (let i = 0; i < str.length; i++) {
buf[i] = str.charCodeAt(i);
}
console.log(buf.toString('utf8'));
// Affiche : Node.jsconst { Buffer } = require('node:buffer');
// Copie une chaîne ASCII dans un `Buffer` un octet à la fois.
// (Cela ne fonctionne que pour les chaînes ASCII uniquement. En général, il faut utiliser
// `Buffer.from()` pour effectuer cette conversion.)
const str = 'Node.js';
const buf = Buffer.allocUnsafe(str.length);
for (let i = 0; i < str.length; i++) {
buf[i] = str.charCodeAt(i);
}
console.log(buf.toString('utf8'));
// Affiche : Node.jsbuf.buffer
- <ArrayBuffer> L'objet
ArrayBuffersous-jacent sur lequel cet objetBufferest créé.
Il n'est pas garanti que cet ArrayBuffer corresponde exactement au Buffer d'origine. Voir les notes sur buf.byteOffset pour plus de détails.
import { Buffer } from 'node:buffer';
const arrayBuffer = new ArrayBuffer(16);
const buffer = Buffer.from(arrayBuffer);
console.log(buffer.buffer === arrayBuffer);
// Prints: trueconst { Buffer } = require('node:buffer');
const arrayBuffer = new ArrayBuffer(16);
const buffer = Buffer.from(arrayBuffer);
console.log(buffer.buffer === arrayBuffer);
// Prints: truebuf.byteOffset
- <integer> Le
byteOffsetde l'objetArrayBuffersous-jacent duBuffer.
Lors de la définition de byteOffset dans Buffer.from(ArrayBuffer, byteOffset, length), ou parfois lors de l'allocation d'un Buffer plus petit que Buffer.poolSize, le tampon ne commence pas à partir d'un décalage zéro sur l'ArrayBuffer sous-jacent.
Cela peut poser des problèmes lors de l'accès à l'ArrayBuffer sous-jacent directement à l'aide de buf.buffer, car d'autres parties de l'ArrayBuffer peuvent ne pas être liées à l'objet Buffer lui-même.
Un problème courant lors de la création d'un objet TypedArray qui partage sa mémoire avec un Buffer est que, dans ce cas, il faut spécifier correctement le byteOffset :
import { Buffer } from 'node:buffer';
// Create a buffer smaller than `Buffer.poolSize`.
const nodeBuffer = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
// When casting the Node.js Buffer to an Int8Array, use the byteOffset
// to refer only to the part of `nodeBuffer.buffer` that contains the memory
// for `nodeBuffer`.
new Int8Array(nodeBuffer.buffer, nodeBuffer.byteOffset, nodeBuffer.length);const { Buffer } = require('node:buffer';
// Create a buffer smaller than `Buffer.poolSize`.
const nodeBuffer = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
// When casting the Node.js Buffer to an Int8Array, use the byteOffset
// to refer only to the part of `nodeBuffer.buffer` that contains the memory
// for `nodeBuffer`.
new Int8Array(nodeBuffer.buffer, nodeBuffer.byteOffset, nodeBuffer.length);buf.compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]])
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | Le paramètre target peut maintenant être un Uint8Array. |
| v5.11.0 | Des paramètres supplémentaires pour spécifier des décalages sont maintenant pris en charge. |
| v0.11.13 | Ajoutée dans : v0.11.13 |
target<Buffer> | <Uint8Array> UnBufferouUint8Arrayavec lequel comparerbuf.targetStart<integer> Le décalage danstargetauquel commencer la comparaison. Par défaut :0.targetEnd<integer> Le décalage danstargetauquel terminer la comparaison (non inclus). Par défaut :target.length.sourceStart<integer> Le décalage dansbufauquel commencer la comparaison. Par défaut :0.sourceEnd<integer> Le décalage dansbufauquel terminer la comparaison (non inclus). Par défaut :buf.length.- Retourne : <integer>
Compare buf avec target et retourne un nombre indiquant si buf vient avant, après ou est identique à target dans l'ordre de tri. La comparaison est basée sur la séquence réelle d'octets dans chaque Buffer.
0est retourné sitargetest identique àbuf.1est retourné sitargetdoit venir avantbuflors du tri.-1est retourné sitargetdoit venir aprèsbuflors du tri.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
const buf3 = Buffer.from('ABCD');
console.log(buf1.compare(buf1));
// Prints: 0
console.log(buf1.compare(buf2));
// Prints: -1
console.log(buf1.compare(buf3));
// Prints: -1
console.log(buf2.compare(buf1));
// Prints: 1
console.log(buf2.compare(buf3));
// Prints: 1
console.log([buf1, buf2, buf3].sort(Buffer.compare));
// Prints: [ <Buffer 41 42 43>, <Buffer 41 42 43 44>, <Buffer 42 43 44> ]
// (This result is equal to: [buf1, buf3, buf2].)const { Buffer } = require('node:buffer');
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
const buf3 = Buffer.from('ABCD');
console.log(buf1.compare(buf1));
// Prints: 0
console.log(buf1.compare(buf2));
// Prints: -1
console.log(buf1.compare(buf3));
// Prints: -1
console.log(buf2.compare(buf1));
// Prints: 1
console.log(buf2.compare(buf3));
// Prints: 1
console.log([buf1, buf2, buf3].sort(Buffer.compare));
// Prints: [ <Buffer 41 42 43>, <Buffer 41 42 43 44>, <Buffer 42 43 44> ]
// (This result is equal to: [buf1, buf3, buf2].)Les arguments optionnels targetStart, targetEnd, sourceStart et sourceEnd peuvent être utilisés pour limiter la comparaison à des plages spécifiques dans target et buf respectivement.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);
console.log(buf1.compare(buf2, 5, 9, 0, 4));
// Prints: 0
console.log(buf1.compare(buf2, 0, 6, 4));
// Prints: -1
console.log(buf1.compare(buf2, 5, 6, 5));
// Prints: 1const { Buffer } = require('node:buffer');
const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);
console.log(buf1.compare(buf2, 5, 9, 0, 4));
// Prints: 0
console.log(buf1.compare(buf2, 0, 6, 4));
// Prints: -1
console.log(buf1.compare(buf2, 5, 6, 5));
// Prints: 1ERR_OUT_OF_RANGE est émis si targetStart < 0, sourceStart < 0, targetEnd > target.byteLength ou sourceEnd > source.byteLength.
buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
Ajoutée dans : v0.1.90
target<Buffer> | <Uint8Array> UnBufferouUint8Arraydans lequel copier.targetStart<integer> Le décalage danstargetauquel commencer l’écriture. Par défaut :0.sourceStart<integer> Le décalage dansbufà partir duquel commencer la copie. Par défaut :0.sourceEnd<integer> Le décalage dansbufauquel arrêter la copie (non inclus). Par défaut :buf.length.- Retourne : <integer> Le nombre d’octets copiés.
Copie les données d’une région de buf vers une région dans target, même si la région de mémoire target chevauche buf.
TypedArray.prototype.set() effectue la même opération, et est disponible pour tous les TypedArrays, y compris les Buffers de Node.js, bien qu’elle prenne des arguments de fonction différents.
import { Buffer } from 'node:buffer';
// Crée deux instances de `Buffer`.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf1[i] = i + 97;
}
// Copie les octets 16 à 19 de `buf1` dans `buf2` en commençant à l’octet 8 de `buf2`.
buf1.copy(buf2, 8, 16, 20);
// Ceci équivaut à :
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// Affiche : !!!!!!!!qrst!!!!!!!!!!!!!const { Buffer } = require('node:buffer');
// Crée deux instances de `Buffer`.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf1[i] = i + 97;
}
// Copie les octets 16 à 19 de `buf1` dans `buf2` en commençant à l’octet 8 de `buf2`.
buf1.copy(buf2, 8, 16, 20);
// Ceci équivaut à :
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// Affiche : !!!!!!!!qrst!!!!!!!!!!!!!import { Buffer } from 'node:buffer';
// Crée un `Buffer` et copie les données d’une région vers une région qui se chevauche
// dans le même `Buffer`.
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// Affiche : efghijghijklmnopqrstuvwxyzconst { Buffer } = require('node:buffer');
// Crée un `Buffer` et copie les données d’une région vers une région qui se chevauche
// dans le même `Buffer`.
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// Affiche : efghijghijklmnopqrstuvwxyzbuf.entries()
Ajouté dans : v1.1.0
- Retourne : <Iterator>
Crée et retourne un itérateur de paires [index, byte] à partir du contenu de buf.
import { Buffer } from 'node:buffer';
// Affiche tout le contenu d'un `Buffer`.
const buf = Buffer.from('buffer');
for (const pair of buf.entries()) {
console.log(pair);
}
// Affiche :
// [0, 98]
// [1, 117]
// [2, 102]
// [3, 102]
// [4, 101]
// [5, 114]const { Buffer } = require('node:buffer');
// Affiche tout le contenu d'un `Buffer`.
const buf = Buffer.from('buffer');
for (const pair of buf.entries()) {
console.log(pair);
}
// Affiche :
// [0, 98]
// [1, 117]
// [2, 102]
// [3, 102]
// [4, 101]
// [5, 114]buf.equals(otherBuffer)
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | Les arguments peuvent désormais être des Uint8Array. |
| v0.11.13 | Ajouté dans : v0.11.13 |
otherBuffer<Buffer> | <Uint8Array> UnBufferouUint8Arrayavec lequel comparerbuf.- Retourne : <boolean>
Retourne true si buf et otherBuffer ont exactement les mêmes octets, false sinon. Équivalent à buf.compare(otherBuffer) === 0.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('414243', 'hex');
const buf3 = Buffer.from('ABCD');
console.log(buf1.equals(buf2));
// Affiche : true
console.log(buf1.equals(buf3));
// Affiche : falseconst { Buffer } = require('node:buffer');
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('414243', 'hex');
const buf3 = Buffer.from('ABCD');
console.log(buf1.equals(buf2));
// Affiche : true
console.log(buf1.equals(buf3));
// Affiche : falsebuf.fill(value[, offset[, end]][, encoding])
[Historique]
| Version | Modifications |
|---|---|
| v11.0.0 | Lance ERR_OUT_OF_RANGE au lieu de ERR_INDEX_OUT_OF_RANGE. |
| v10.0.0 | Les valeurs end négatives lancent une erreur ERR_INDEX_OUT_OF_RANGE. |
| v10.0.0 | Tenter de remplir un tampon de longueur non nulle avec un tampon de longueur nulle déclenche une exception. |
| v10.0.0 | Spécifier une chaîne invalide pour value déclenche une exception. |
| v5.7.0 | Le paramètre encoding est désormais pris en charge. |
| v0.5.0 | Ajoutée dans : v0.5.0 |
value<string> | <Buffer> | <Uint8Array> | <integer> La valeur avec laquelle remplirbuf. Une valeur vide (string, Uint8Array, Buffer) est forcée à0.offset<integer> Nombre d'octets à ignorer avant de commencer à remplirbuf. Par défaut :0.end<integer> Où arrêter de remplirbuf(non inclus). Par défaut :buf.length.encoding<string> L'encodage pourvaluesivalueest une chaîne. Par défaut :'utf8'.- Retourne : <Buffer> Une référence à
buf.
Remplit buf avec la value spécifiée. Si offset et end ne sont pas donnés, tout le buf sera rempli :
import { Buffer } from 'node:buffer';
// Remplir un `Buffer` avec le caractère ASCII 'h'.
const b = Buffer.allocUnsafe(50).fill('h');
console.log(b.toString());
// Affiche : hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
// Remplir un tampon avec une chaîne vide
const c = Buffer.allocUnsafe(5).fill('');
console.log(c.fill(''));
// Affiche : <Buffer 00 00 00 00 00>const { Buffer } = require('node:buffer');
// Remplir un `Buffer` avec le caractère ASCII 'h'.
const b = Buffer.allocUnsafe(50).fill('h');
console.log(b.toString());
// Affiche : hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
// Remplir un tampon avec une chaîne vide
const c = Buffer.allocUnsafe(5).fill('');
console.log(c.fill(''));
// Affiche : <Buffer 00 00 00 00 00>value est forcée à une valeur uint32 si ce n'est pas une chaîne, un Buffer ou un entier. Si l'entier résultant est supérieur à 255 (décimal), buf sera rempli avec value & 255.
Si l'écriture finale d'une opération fill() tombe sur un caractère multi-octet, seuls les octets de ce caractère qui tiennent dans buf sont écrits :
import { Buffer } from 'node:buffer';
// Remplir un `Buffer` avec un caractère qui prend deux octets en UTF-8.
console.log(Buffer.allocUnsafe(5).fill('\u0222'));
// Affiche : <Buffer c8 a2 c8 a2 c8>const { Buffer } = require('node:buffer');
// Remplir un `Buffer` avec un caractère qui prend deux octets en UTF-8.
console.log(Buffer.allocUnsafe(5).fill('\u0222'));
// Affiche : <Buffer c8 a2 c8 a2 c8>Si value contient des caractères invalides, elle est tronquée ; s'il ne reste plus de données de remplissage valides, une exception est levée :
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(5);
console.log(buf.fill('a'));
// Affiche : <Buffer 61 61 61 61 61>
console.log(buf.fill('aazz', 'hex'));
// Affiche : <Buffer aa aa aa aa aa>
console.log(buf.fill('zz', 'hex'));
// Lance une exception.const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(5);
console.log(buf.fill('a'));
// Affiche : <Buffer 61 61 61 61 61>
console.log(buf.fill('aazz', 'hex'));
// Affiche : <Buffer aa aa aa aa aa>
console.log(buf.fill('zz', 'hex'));
// Lance une exception.buf.includes(value[, byteOffset][, encoding])
Ajouté dans : v5.3.0
value<string> | <Buffer> | <Uint8Array> | <integer> Ce qu'il faut rechercher.byteOffset<integer> Où commencer la recherche dansbuf. Si négatif, l'offset est calculé à partir de la fin debuf. Par défaut :0.encoding<string> Sivalueest une chaîne de caractères, il s'agit de son encodage. Par défaut :'utf8'.- Retourne : <boolean>
truesivaluea été trouvé dansbuf,falsesinon.
Équivalent à buf.indexOf() !== -1.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this is a buffer');
console.log(buf.includes('this'));
// Prints: true
console.log(buf.includes('is'));
// Prints: true
console.log(buf.includes(Buffer.from('a buffer')));
// Prints: true
console.log(buf.includes(97));
// Prints: true (97 is the decimal ASCII value for 'a')
console.log(buf.includes(Buffer.from('a buffer example')));
// Prints: false
console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8)));
// Prints: true
console.log(buf.includes('this', 4));
// Prints: falseconst { Buffer } = require('node:buffer');
const buf = Buffer.from('this is a buffer');
console.log(buf.includes('this'));
// Prints: true
console.log(buf.includes('is'));
// Prints: true
console.log(buf.includes(Buffer.from('a buffer')));
// Prints: true
console.log(buf.includes(97));
// Prints: true (97 is the decimal ASCII value for 'a')
console.log(buf.includes(Buffer.from('a buffer example')));
// Prints: false
console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8)));
// Prints: true
console.log(buf.includes('this', 4));
// Prints: falsebuf.indexOf(value[, byteOffset][, encoding])
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | La value peut désormais être un Uint8Array. |
| v5.7.0, v4.4.0 | Lorsque encoding est passé, le paramètre byteOffset n'est plus obligatoire. |
| v1.5.0 | Ajouté dans : v1.5.0 |
value<string> | <Buffer> | <Uint8Array> | <integer> Ce qu'il faut rechercher.byteOffset<integer> Où commencer la recherche dansbuf. Si négatif, le décalage est calculé à partir de la fin debuf. Par défaut:0.encoding<string> Sivalueest une chaîne, c'est l'encodage utilisé pour déterminer la représentation binaire de la chaîne qui sera recherchée dansbuf. Par défaut:'utf8'.- Renvoie: <integer> L'index de la première occurrence de
valuedansbuf, ou-1sibufne contient pasvalue.
Si value est :
- une chaîne de caractères,
valueest interprété selon l'encodage des caractères dansencoding. - un
BufferouUint8Array,valuesera utilisé dans son intégralité. Pour comparer unBufferpartiel, utilisezbuf.subarray. - un nombre,
valuesera interprété comme une valeur entière non signée de 8 bits comprise entre0et255.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this is a buffer');
console.log(buf.indexOf('this'));
// Prints: 0
console.log(buf.indexOf('is'));
// Prints: 2
console.log(buf.indexOf(Buffer.from('a buffer')));
// Prints: 8
console.log(buf.indexOf(97));
// Prints: 8 (97 is the decimal ASCII value for 'a')
console.log(buf.indexOf(Buffer.from('a buffer example')));
// Prints: -1
console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
// Prints: 8
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
// Prints: 4
console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
// Prints: 6const { Buffer } = require('node:buffer');
const buf = Buffer.from('this is a buffer');
console.log(buf.indexOf('this'));
// Prints: 0
console.log(buf.indexOf('is'));
// Prints: 2
console.log(buf.indexOf(Buffer.from('a buffer')));
// Prints: 8
console.log(buf.indexOf(97));
// Prints: 8 (97 is the decimal ASCII value for 'a')
console.log(buf.indexOf(Buffer.from('a buffer example')));
// Prints: -1
console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
// Prints: 8
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
// Prints: 4
console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
// Prints: 6Si value n'est pas une chaîne de caractères, un nombre ou un Buffer, cette méthode lèvera une exception TypeError. Si value est un nombre, il sera converti en une valeur d'octet valide, un entier entre 0 et 255.
Si byteOffset n'est pas un nombre, il sera converti en nombre. Si le résultat de la conversion est NaN ou 0, alors l'intégralité du tampon sera recherchée. Ce comportement correspond à String.prototype.indexOf().
import { Buffer } from 'node:buffer';
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.indexOf(99.9));
console.log(b.indexOf(256 + 99));
// Passing a byteOffset that coerces to NaN or 0.
// Prints: 1, searching the whole buffer.
console.log(b.indexOf('b', undefined));
console.log(b.indexOf('b', {}));
console.log(b.indexOf('b', null));
console.log(b.indexOf('b', []));const { Buffer } = require('node:buffer');
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.indexOf(99.9));
console.log(b.indexOf(256 + 99));
// Passing a byteOffset that coerces to NaN or 0.
// Prints: 1, searching the whole buffer.
console.log(b.indexOf('b', undefined));
console.log(b.indexOf('b', {}));
console.log(b.indexOf('b', null));
console.log(b.indexOf('b', []));Si value est une chaîne vide ou un Buffer vide et que byteOffset est inférieur à buf.length, byteOffset sera renvoyé. Si value est vide et que byteOffset est au moins égal à buf.length, buf.length sera renvoyé.
buf.keys()
Ajouté dans : v1.1.0
- Retourne : <Iterator>
Crée et retourne un itérateur des clés (index) de buf.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
for (const key of buf.keys()) {
console.log(key);
}
// Prints:
// 0
// 1
// 2
// 3
// 4
// 5const { Buffer } = require('node:buffer');
const buf = Buffer.from('buffer');
for (const key of buf.keys()) {
console.log(key);
}
// Prints:
// 0
// 1
// 2
// 3
// 4
// 5buf.lastIndexOf(value[, byteOffset][, encoding])
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | La value peut maintenant être un Uint8Array. |
| v6.0.0 | Ajouté dans : v6.0.0 |
value<string> | <Buffer> | <Uint8Array> | <integer> Ce qu’il faut rechercher.byteOffset<integer> Où commencer la recherche dansbuf. Si négatif, le décalage est calculé à partir de la fin debuf. Par défaut :buf.length - 1.encoding<string> Sivalueest une chaîne, il s’agit de l’encodage utilisé pour déterminer la représentation binaire de la chaîne qui sera recherchée dansbuf. Par défaut :'utf8'.- Retourne : <integer> L’index de la dernière occurrence de
valuedansbuf, ou-1sibufne contient pasvalue.
Identique à buf.indexOf(), sauf que la dernière occurrence de value est trouvée plutôt que la première.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this buffer is a buffer');
console.log(buf.lastIndexOf('this'));
// Prints: 0
console.log(buf.lastIndexOf('buffer'));
// Prints: 17
console.log(buf.lastIndexOf(Buffer.from('buffer')));
// Prints: 17
console.log(buf.lastIndexOf(97));
// Prints: 15 (97 is the decimal ASCII value for 'a')
console.log(buf.lastIndexOf(Buffer.from('yolo')));
// Prints: -1
console.log(buf.lastIndexOf('buffer', 5));
// Prints: 5
console.log(buf.lastIndexOf('buffer', 4));
// Prints: -1
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));
// Prints: 6
console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));
// Prints: 4const { Buffer } = require('node:buffer');
const buf = Buffer.from('this buffer is a buffer');
console.log(buf.lastIndexOf('this'));
// Prints: 0
console.log(buf.lastIndexOf('buffer'));
// Prints: 17
console.log(buf.lastIndexOf(Buffer.from('buffer')));
// Prints: 17
console.log(buf.lastIndexOf(97));
// Prints: 15 (97 is the decimal ASCII value for 'a')
console.log(buf.lastIndexOf(Buffer.from('yolo')));
// Prints: -1
console.log(buf.lastIndexOf('buffer', 5));
// Prints: 5
console.log(buf.lastIndexOf('buffer', 4));
// Prints: -1
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));
// Prints: 6
console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));
// Prints: 4Si value n’est pas une chaîne, un nombre ou un Buffer, cette méthode lèvera une TypeError. Si value est un nombre, il sera converti en une valeur d’octet valide, un entier compris entre 0 et 255.
Si byteOffset n’est pas un nombre, il sera converti en nombre. Tous les arguments qui se transforment en NaN, comme {} ou undefined, rechercheront dans l’ensemble du tampon. Ce comportement correspond à String.prototype.lastIndexOf().
import { Buffer } from 'node:buffer';
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.lastIndexOf(99.9));
console.log(b.lastIndexOf(256 + 99));
// Passing a byteOffset that coerces to NaN.
// Prints: 1, searching the whole buffer.
console.log(b.lastIndexOf('b', undefined));
console.log(b.lastIndexOf('b', {}));
// Passing a byteOffset that coerces to 0.
// Prints: -1, equivalent to passing 0.
console.log(b.lastIndexOf('b', null));
console.log(b.lastIndexOf('b', []));const { Buffer } = require('node:buffer');
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.lastIndexOf(99.9));
console.log(b.lastIndexOf(256 + 99));
// Passing a byteOffset that coerces to NaN.
// Prints: 1, searching the whole buffer.
console.log(b.lastIndexOf('b', undefined));
console.log(b.lastIndexOf('b', {}));
// Passing a byteOffset that coerces to 0.
// Prints: -1, equivalent to passing 0.
console.log(b.lastIndexOf('b', null));
console.log(b.lastIndexOf('b', []));Si value est une chaîne vide ou un Buffer vide, byteOffset sera retourné.
buf.length
Ajouté dans : v0.1.90
Renvoie le nombre d’octets dans buf.
import { Buffer } from 'node:buffer';
// Créez un `Buffer` et écrivez une chaîne plus courte en utilisant UTF-8.
const buf = Buffer.alloc(1234);
console.log(buf.length);
// Affiche : 1234
buf.write('some string', 0, 'utf8');
console.log(buf.length);
// Affiche : 1234const { Buffer } = require('node:buffer');
// Créez un `Buffer` et écrivez une chaîne plus courte en utilisant UTF-8.
const buf = Buffer.alloc(1234);
console.log(buf.length);
// Affiche : 1234
buf.write('some string', 0, 'utf8');
console.log(buf.length);
// Affiche : 1234buf.parent
Obsolète depuis : v8.0.0
[Stable: 0 - Obsolète]
Stable: 0 Stability: 0 - Obsolète : Utilisez buf.buffer à la place.
La propriété buf.parent est un alias obsolète pour buf.buffer.
buf.readBigInt64BE([offset])
Ajouté dans : v12.0.0, v10.20.0
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <bigint>
Lit un entier 64 bits signé, big-endian depuis buf à l’offset spécifié.
Les entiers lus depuis un Buffer sont interprétés comme des valeurs signées en complément à deux.
buf.readBigInt64LE([offset])
Ajouté dans : v12.0.0, v10.20.0
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <bigint>
Lit un entier 64 bits signé, little-endian depuis buf à l’offset spécifié.
Les entiers lus depuis un Buffer sont interprétés comme des valeurs signées en complément à deux.
buf.readBigUInt64BE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.10.0, v12.19.0 | Cette fonction est également disponible sous le nom buf.readBigUint64BE(). |
| v12.0.0, v10.20.0 | Ajoutée dans : v12.0.0, v10.20.0 |
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <bigint>
Lit un entier non signé de 64 bits en big-endian depuis buf à l’offset spécifié.
Cette fonction est également disponible sous l’alias readBigUint64BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64BE(0));
// Affiche : 4294967295nconst { Buffer } = require('node:buffer');
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64BE(0));
// Affiche : 4294967295nbuf.readBigUInt64LE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.10.0, v12.19.0 | Cette fonction est également disponible sous le nom buf.readBigUint64LE(). |
| v12.0.0, v10.20.0 | Ajoutée dans : v12.0.0, v10.20.0 |
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <bigint>
Lit un entier non signé de 64 bits en little-endian depuis buf à l’offset spécifié.
Cette fonction est également disponible sous l’alias readBigUint64LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64LE(0));
// Affiche : 18446744069414584320nconst { Buffer } = require('node:buffer');
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64LE(0));
// Affiche : 18446744069414584320nbuf.readDoubleBE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <number>
Lit un double 64 bits big-endian depuis buf à l’offset spécifié.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleBE(0));
// Affiche : 8.20788039913184e-304const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleBE(0));
// Affiche : 8.20788039913184e-304buf.readDoubleLE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
offset<integer> Nombre d’octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <number>
Lit un double 64 bits little-endian depuis buf à l’offset spécifié.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleLE(0));
// Affiche : 5.447603722011605e-270
console.log(buf.readDoubleLE(1));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleLE(0));
// Affiche : 5.447603722011605e-270
console.log(buf.readDoubleLE(1));
// Lève ERR_OUT_OF_RANGE.buf.readFloatBE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <number>
Lit un float 32 bits, big-endian depuis buf à l'offset spécifié.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatBE(0));
// Affiche : 2.387939260590663e-38const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatBE(0));
// Affiche : 2.387939260590663e-38buf.readFloatLE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <number>
Lit un float 32 bits, little-endian depuis buf à l'offset spécifié.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatLE(0));
// Affiche : 1.539989614439558e-36
console.log(buf.readFloatLE(1));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatLE(0));
// Affiche : 1.539989614439558e-36
console.log(buf.readFloatLE(1));
// Lève ERR_OUT_OF_RANGE.buf.readInt8([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite du décalage en uint32. |
| v0.5.0 | Ajouté dans : v0.5.0 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 1. Par défaut :0.- Retourne : <integer>
Lit un entier signé de 8 bits à partir de buf à l'adresse offset spécifiée.
Les entiers lus à partir d'un Buffer sont interprétés comme des valeurs signées en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([-1, 5]);
console.log(buf.readInt8(0));
// Affiche : -1
console.log(buf.readInt8(1));
// Affiche : 5
console.log(buf.readInt8(2));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([-1, 5]);
console.log(buf.readInt8(0));
// Affiche : -1
console.log(buf.readInt8(1));
// Affiche : 5
console.log(buf.readInt8(2));
// Lève ERR_OUT_OF_RANGE.buf.readInt16BE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite du décalage en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
Lit un entier signé de 16 bits big-endian à partir de buf à l'adresse offset spécifiée.
Les entiers lus à partir d'un Buffer sont interprétés comme des valeurs signées en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16BE(0));
// Affiche : 5const { Buffer } = require('node:buffer');
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16BE(0));
// Affiche : 5buf.readInt16LE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert supprimé et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
Lit un entier 16 bits signé en little-endian depuis buf à l' offset spécifié.
Les entiers lus depuis un Buffer sont interprétés comme des valeurs signées en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16LE(0));
// Affiche : 1280
console.log(buf.readInt16LE(1));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16LE(0));
// Affiche : 1280
console.log(buf.readInt16LE(1));
// Lève ERR_OUT_OF_RANGE.buf.readInt32BE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert supprimé et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
Lit un entier 32 bits signé en big-endian depuis buf à l' offset spécifié.
Les entiers lus depuis un Buffer sont interprétés comme des valeurs signées en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32BE(0));
// Affiche : 5const { Buffer } = require('node:buffer');
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32BE(0));
// Affiche : 5buf.readInt32LE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
Lit un entier 32 bits signé, little-endian, depuis buf à l' offset spécifié.
Les entiers lus depuis un Buffer sont interprétés comme des valeurs signées en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32LE(0));
// Affiche : 83886080
console.log(buf.readInt32LE(1));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32LE(0));
// Affiche : 83886080
console.log(buf.readInt32LE(1));
// Lève ERR_OUT_OF_RANGE.buf.readIntBE(offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset et de byteLength en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à lire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
Lit byteLength nombre d'octets depuis buf à l' offset spécifié et interprète le résultat comme une valeur signée en complément à deux, big-endian, supportant jusqu'à 48 bits de précision.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntBE(0, 6).toString(16));
// Affiche : 1234567890ab
console.log(buf.readIntBE(1, 6).toString(16));
// Lève ERR_OUT_OF_RANGE.
console.log(buf.readIntBE(1, 0).toString(16));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntBE(0, 6).toString(16));
// Affiche : 1234567890ab
console.log(buf.readIntBE(1, 6).toString(16));
// Lève ERR_OUT_OF_RANGE.
console.log(buf.readIntBE(1, 0).toString(16));
// Lève ERR_OUT_OF_RANGE.buf.readIntLE(offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset et de byteLength en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à lire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
Lit byteLength octets depuis buf à l'emplacement offset spécifié et interprète le résultat comme une valeur signée en complément à deux en little-endian prenant en charge jusqu'à 48 bits de précision.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntLE(0, 6).toString(16));
// Affiche : -546f87a9cbeeconst { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntLE(0, 6).toString(16));
// Affiche : -546f87a9cbeebuf.readUInt8([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom buf.readUint8(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.0 | Ajoutée dans : v0.5.0 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 1. Par défaut :0.- Retourne : <integer>
Lit un entier non signé de 8 bits depuis buf à l'emplacement offset spécifié.
Cette fonction est également disponible sous l'alias readUint8.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, -2]);
console.log(buf.readUInt8(0));
// Affiche : 1
console.log(buf.readUInt8(1));
// Affiche : 254
console.log(buf.readUInt8(2));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([1, -2]);
console.log(buf.readUInt8(0));
// Affiche : 1
console.log(buf.readUInt8(1));
// Affiche : 254
console.log(buf.readUInt8(2));
// Lève ERR_OUT_OF_RANGE.buf.readUInt16BE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.readUint16BE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
Lit un entier non signé de 16 bits en big-endian depuis buf à l' offset spécifié.
Cette fonction est également disponible sous l'alias readUint16BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16BE(0).toString(16));
// Affiche : 1234
console.log(buf.readUInt16BE(1).toString(16));
// Affiche : 3456const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16BE(0).toString(16));
// Affiche : 1234
console.log(buf.readUInt16BE(1).toString(16));
// Affiche : 3456buf.readUInt16LE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.readUint16LE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
Lit un entier non signé de 16 bits en little-endian depuis buf à l' offset spécifié.
Cette fonction est également disponible sous l'alias readUint16LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16LE(0).toString(16));
// Affiche : 3412
console.log(buf.readUInt16LE(1).toString(16));
// Affiche : 5634
console.log(buf.readUInt16LE(2).toString(16));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16LE(0).toString(16));
// Affiche : 3412
console.log(buf.readUInt16LE(1).toString(16));
// Affiche : 5634
console.log(buf.readUInt16LE(2).toString(16));
// Lève ERR_OUT_OF_RANGE.buf.readUInt32BE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom de buf.readUint32BE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
Lit un entier non signé de 32 bits en big-endian à partir de buf à l'offset spécifié.
Cette fonction est également disponible sous l'alias readUint32BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32BE(0).toString(16));
// Affiche : 12345678const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32BE(0).toString(16));
// Affiche : 12345678buf.readUInt32LE([offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom de buf.readUint32LE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
Lit un entier non signé de 32 bits en little-endian à partir de buf à l'offset spécifié.
Cette fonction est également disponible sous l'alias readUint32LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32LE(0).toString(16));
// Affiche : 78563412
console.log(buf.readUInt32LE(1).toString(16));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32LE(0).toString(16));
// Affiche : 78563412
console.log(buf.readUInt32LE(1).toString(16));
// Lève ERR_OUT_OF_RANGE.buf.readUIntBE(offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.readUintBE(). |
| v10.0.0 | noAssert a été supprimé, ainsi que la coercition implicite de l'offset et de byteLength en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à lire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
Lit byteLength octets à partir de buf à l' offset spécifié et interprète le résultat comme un entier non signé en big-endian prenant en charge jusqu'à 48 bits de précision.
Cette fonction est également disponible sous l'alias readUintBE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntBE(0, 6).toString(16));
// Affiche : 1234567890ab
console.log(buf.readUIntBE(1, 6).toString(16));
// Lève ERR_OUT_OF_RANGE.const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntBE(0, 6).toString(16));
// Affiche : 1234567890ab
console.log(buf.readUIntBE(1, 6).toString(16));
// Lève ERR_OUT_OF_RANGE.buf.readUIntLE(offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.readUintLE(). |
| v10.0.0 | noAssert a été supprimé, ainsi que la coercition implicite de l'offset et de byteLength en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
offset<integer> Nombre d'octets à ignorer avant de commencer la lecture. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à lire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
Lit byteLength octets à partir de buf à l' offset spécifié et interprète le résultat comme un entier non signé, en little-endian prenant en charge jusqu'à 48 bits de précision.
Cette fonction est également disponible sous l'alias readUintLE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntLE(0, 6).toString(16));
// Affiche : ab9078563412const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntLE(0, 6).toString(16));
// Affiche : ab9078563412buf.subarray([start[, end]])
Ajouté dans : v3.0.0
start<integer> Où le nouveauBuffercommencera. Par défaut :0.end<integer> Où le nouveauBufferse terminera (non inclus). Par défaut :buf.length.- Retourne : <Buffer>
Retourne un nouveau Buffer qui référence la même mémoire que l’original, mais décalé et rogné par les index start et end.
Spécifier un end supérieur à buf.length retournera le même résultat qu’un end égal à buf.length.
Cette méthode est héritée de TypedArray.prototype.subarray().
Modifier la nouvelle tranche Buffer modifiera la mémoire dans le Buffer original car la mémoire allouée des deux objets se chevauche.
import { Buffer } from 'node:buffer';
// Créer un `Buffer` avec l’alphabet ASCII, prendre une tranche, et modifier un octet
// à partir du `Buffer` original.
const buf1 = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf1[i] = i + 97;
}
const buf2 = buf1.subarray(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
// Affiche : abc
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// Affiche : !bcconst { Buffer } = require('node:buffer');
// Créer un `Buffer` avec l’alphabet ASCII, prendre une tranche, et modifier un octet
// à partir du `Buffer` original.
const buf1 = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour 'a'.
buf1[i] = i + 97;
}
const buf2 = buf1.subarray(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
// Affiche : abc
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// Affiche : !bcSpécifier des index négatifs provoque la génération de la tranche par rapport à la fin de buf plutôt qu’au début.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
console.log(buf.subarray(-6, -1).toString());
// Affiche : buffe
// (Équivalent à buf.subarray(0, 5).)
console.log(buf.subarray(-6, -2).toString());
// Affiche : buff
// (Équivalent à buf.subarray(0, 4).)
console.log(buf.subarray(-5, -2).toString());
// Affiche : uff
// (Équivalent à buf.subarray(1, 4).)const { Buffer } = require('node:buffer');
const buf = Buffer.from('buffer');
console.log(buf.subarray(-6, -1).toString());
// Affiche : buffe
// (Équivalent à buf.subarray(0, 5).)
console.log(buf.subarray(-6, -2).toString());
// Affiche : buff
// (Équivalent à buf.subarray(0, 4).)
console.log(buf.subarray(-5, -2).toString());
// Affiche : uff
// (Équivalent à buf.subarray(1, 4).)buf.slice([start[, end]])
[Historique]
| Version | Modifications |
|---|---|
| v17.5.0, v16.15.0 | La méthode buf.slice() est obsolète. |
| v7.0.0 | Tous les décalages sont maintenant forcés en entiers avant d'effectuer des calculs avec eux. |
| v7.1.0, v6.9.2 | Forcer les décalages en entiers gère maintenant correctement les valeurs en dehors de la plage d'entiers 32 bits. |
| v0.3.0 | Ajouté dans : v0.3.0 |
start<integer> Où le nouveauBufferva commencer. Par défaut :0.end<integer> Où le nouveauBufferva se terminer (non inclus). Par défaut :buf.length.- Retourne : <Buffer>
[Stable: 0 - Obsolète]
Stable: 0 Stabilité: 0 - Obsolète : Utilisez buf.subarray à la place.
Retourne un nouveau Buffer qui référence la même mémoire que l'original, mais décalé et recadré par les index start et end.
Cette méthode n'est pas compatible avec Uint8Array.prototype.slice(), qui est une superclasse de Buffer. Pour copier la tranche, utilisez Uint8Array.prototype.slice().
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
const copiedBuf = Uint8Array.prototype.slice.call(buf);
copiedBuf[0]++;
console.log(copiedBuf.toString());
// Affiche: cuffer
console.log(buf.toString());
// Affiche: buffer
// Avec buf.slice(), le buffer original est modifié.
const notReallyCopiedBuf = buf.slice();
notReallyCopiedBuf[0]++;
console.log(notReallyCopiedBuf.toString());
// Affiche: cuffer
console.log(buf.toString());
// Affiche également: cuffer (!)const { Buffer } = require('node:buffer');
const buf = Buffer.from('buffer');
const copiedBuf = Uint8Array.prototype.slice.call(buf);
copiedBuf[0]++;
console.log(copiedBuf.toString());
// Affiche: cuffer
console.log(buf.toString());
// Affiche: buffer
// Avec buf.slice(), le buffer original est modifié.
const notReallyCopiedBuf = buf.slice();
notReallyCopiedBuf[0]++;
console.log(notReallyCopiedBuf.toString());
// Affiche: cuffer
console.log(buf.toString());
// Affiche également: cuffer (!)buf.swap16()
Ajouté dans : v5.10.0
- Retourne : <Buffer> Une référence à
buf.
Interprète buf comme un tableau d’entiers non signés de 16 bits et permute l’ordre des octets sur place. Lève ERR_INVALID_BUFFER_SIZE si buf.length n’est pas un multiple de 2.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
buf1.swap16();
console.log(buf1);
// Prints: <Buffer 02 01 04 03 06 05 08 07>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap16();
// Throws ERR_INVALID_BUFFER_SIZE.const { Buffer } = require('node:buffer');
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
buf1.swap16();
console.log(buf1);
// Prints: <Buffer 02 01 04 03 06 05 08 07>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap16();
// Throws ERR_INVALID_BUFFER_SIZE.Une utilisation pratique de buf.swap16() est d’effectuer une conversion rapide sur place entre UTF-16 little-endian et UTF-16 big-endian :
import { Buffer } from 'node:buffer';
const buf = Buffer.from('This is little-endian UTF-16', 'utf16le');
buf.swap16(); // Convert to big-endian UTF-16 text.const { Buffer } = require('node:buffer');
const buf = Buffer.from('This is little-endian UTF-16', 'utf16le');
buf.swap16(); // Convert to big-endian UTF-16 text.buf.swap32()
Ajouté dans : v5.10.0
- Retourne : <Buffer> Une référence à
buf.
Interprète buf comme un tableau d’entiers non signés de 32 bits et permute l’ordre des octets sur place. Lève ERR_INVALID_BUFFER_SIZE si buf.length n’est pas un multiple de 4.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
buf1.swap32();
console.log(buf1);
// Prints: <Buffer 04 03 02 01 08 07 06 05>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap32();
// Throws ERR_INVALID_BUFFER_SIZE.const { Buffer } = require('node:buffer');
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
buf1.swap32();
console.log(buf1);
// Prints: <Buffer 04 03 02 01 08 07 06 05>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap32();
// Throws ERR_INVALID_BUFFER_SIZE.buf.swap64()
Ajoutée dans : v6.3.0
- Retourne : <Buffer> Une référence à
buf.
Interprète buf comme un tableau de nombres 64 bits et inverse l’ordre des octets sur place. Lève ERR_INVALID_BUFFER_SIZE si buf.length n’est pas un multiple de 8.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Affiche : <Buffer 01 02 03 04 05 06 07 08>
buf1.swap64();
console.log(buf1);
// Affiche : <Buffer 08 07 06 05 04 03 02 01>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap64();
// Lève ERR_INVALID_BUFFER_SIZE.const { Buffer } = require('node:buffer');
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
console.log(buf1);
// Affiche : <Buffer 01 02 03 04 05 06 07 08>
buf1.swap64();
console.log(buf1);
// Affiche : <Buffer 08 07 06 05 04 03 02 01>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap64();
// Lève ERR_INVALID_BUFFER_SIZE.buf.toJSON()
Ajoutée dans : v0.9.2
- Retourne : <Object>
Retourne une représentation JSON de buf. JSON.stringify() appelle implicitement cette fonction lors de la transformation en chaîne d’une instance Buffer.
Buffer.from() accepte les objets au format retourné par cette méthode. En particulier, Buffer.from(buf.toJSON()) fonctionne comme Buffer.from(buf).
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);
console.log(json);
// Affiche : {"type":"Buffer","data":[1,2,3,4,5]}
const copy = JSON.parse(json, (key, value) => {
return value && value.type === 'Buffer' ?
Buffer.from(value) :
value;
});
console.log(copy);
// Affiche : <Buffer 01 02 03 04 05>const { Buffer } = require('node:buffer');
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);
console.log(json);
// Affiche : {"type":"Buffer","data":[1,2,3,4,5]}
const copy = JSON.parse(json, (key, value) => {
return value && value.type === 'Buffer' ?
Buffer.from(value) :
value;
});
console.log(copy);
// Affiche : <Buffer 01 02 03 04 05>buf.toString([encoding[, start[, end]]])
Ajouté dans: v0.1.90
encoding<string> L'encodage de caractères à utiliser. Par défaut :'utf8'.start<integer> Le décalage d'octet auquel commencer le décodage. Par défaut :0.end<integer> Le décalage d'octet auquel arrêter le décodage (non inclus). Par défaut :buf.length.- Retourne : <string>
Décode buf en une chaîne de caractères selon l'encodage de caractères spécifié dans encoding. start et end peuvent être passés pour ne décoder qu'un sous-ensemble de buf.
Si encoding est 'utf8' et qu'une séquence d'octets dans l'entrée n'est pas un UTF-8 valide, alors chaque octet invalide est remplacé par le caractère de remplacement U+FFFD.
La longueur maximale d'une instance de chaîne (en unités de code UTF-16) est disponible sous le nom de buffer.constants.MAX_STRING_LENGTH.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour '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éconst { Buffer } = require('node:buffer');
const buf1 = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 est la valeur ASCII décimale pour '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ébuf.values()
Ajouté dans : v1.1.0
- Retourne : <Iterator>
Crée et retourne un itérateur pour les valeurs (octets) de buf. Cette fonction est appelée automatiquement lorsqu’un Buffer est utilisé dans une instruction for..of.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
for (const value of buf.values()) {
console.log(value);
}
// Prints:
// 98
// 117
// 102
// 102
// 101
// 114
for (const value of buf) {
console.log(value);
}
// Prints:
// 98
// 117
// 102
// 102
// 101
// 114const { Buffer } = require('node:buffer');
const buf = Buffer.from('buffer');
for (const value of buf.values()) {
console.log(value);
}
// Prints:
// 98
// 117
// 102
// 102
// 101
// 114
for (const value of buf) {
console.log(value);
}
// Prints:
// 98
// 117
// 102
// 102
// 101
// 114buf.write(string[, offset[, length]][, encoding])
Ajouté dans : v0.1.90
string<string> Chaîne à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrirestring. Par défaut :0.length<integer> Nombre maximum d’octets à écrire (les octets écrits ne dépasseront pasbuf.length - offset). Par défaut :buf.length - offset.encoding<string> L’encodage des caractères destring. Par défaut :'utf8'.- Retourne : <integer> Nombre d’octets écrits.
Écrit string dans buf à offset selon l’encodage des caractères dans encoding. Le paramètre length est le nombre d’octets à écrire. Si buf ne contient pas suffisamment d’espace pour contenir la chaîne entière, seule une partie de string sera écrite. Cependant, les caractères partiellement encodés ne seront pas écrits.
import { Buffer } from 'node: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 : abconst { Buffer } = require('node: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 : abbuf.writeBigInt64BE(value[, offset])
Ajouté dans : v12.0.0, v10.20.0
value<bigint> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire à :0 <= offset <= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en big-endian.
value est interprété et écrit comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64BE(0x0102030405060708n, 0);
console.log(buf);
// Affiche : <Buffer 01 02 03 04 05 06 07 08>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64BE(0x0102030405060708n, 0);
console.log(buf);
// Affiche : <Buffer 01 02 03 04 05 06 07 08>buf.writeBigInt64LE(value[, offset])
Ajouté dans : v12.0.0, v10.20.0
value<bigint> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire à :0 <= offset <= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en little-endian.
value est interprété et écrit comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64LE(0x0102030405060708n, 0);
console.log(buf);
// Affiche : <Buffer 08 07 06 05 04 03 02 01>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64LE(0x0102030405060708n, 0);
console.log(buf);
// Affiche : <Buffer 08 07 06 05 04 03 02 01>buf.writeBigUInt64BE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.10.0, v12.19.0 | Cette fonction est également disponible en tant que buf.writeBigUint64BE(). |
| v12.0.0, v10.20.0 | Ajoutée dans : v12.0.0, v10.20.0 |
value<bigint> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en tant que big-endian.
Cette fonction est également disponible sous l’alias writeBigUint64BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64BE(0xdecafafecacefaden, 0);
console.log(buf);
// Affiche : <Buffer de ca fa fe ca ce fa de>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64BE(0xdecafafecacefaden, 0);
console.log(buf);
// Affiche : <Buffer de ca fa fe ca ce fa de>buf.writeBigUInt64LE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.10.0, v12.19.0 | Cette fonction est également disponible en tant que buf.writeBigUint64LE(). |
| v12.0.0, v10.20.0 | Ajoutée dans : v12.0.0, v10.20.0 |
value<bigint> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire :0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en tant que little-endian.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64LE(0xdecafafecacefaden, 0);
console.log(buf);
// Affiche : <Buffer de fa ce ca fe fa ca de>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64LE(0xdecafafecacefaden, 0);
console.log(buf);
// Affiche : <Buffer de fa ce ca fe fa ca de>Cette fonction est également disponible sous l’alias writeBigUint64LE.
buf.writeDoubleBE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert supprimé et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
value<number> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'offset offset spécifié en big-endian. La value doit être un nombre JavaScript. Le comportement est indéfini lorsque value est autre chose qu'un nombre JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleBE(123.456, 0);
console.log(buf);
// Prints: <Buffer 40 5e dd 2f 1a 9f be 77>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleBE(123.456, 0);
console.log(buf);
// Prints: <Buffer 40 5e dd 2f 1a 9f be 77>buf.writeDoubleLE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert supprimé et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
value<number> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 8. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'offset offset spécifié en little-endian. La value doit être un nombre JavaScript. Le comportement est indéfini lorsque value est autre chose qu'un nombre JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleLE(123.456, 0);
console.log(buf);
// Prints: <Buffer 77 be 9f 1a 2f dd 5e 40>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleLE(123.456, 0);
console.log(buf);
// Prints: <Buffer 77 be 9f 1a 2f dd 5e 40>buf.writeFloatBE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
value<number> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'offset spécifié en big-endian. Le comportement est indéfini lorsque value est autre chose qu'un nombre JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeFloatBE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer 4f 4a fe bb>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeFloatBE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer 4f 4a fe bb>buf.writeFloatLE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
value<number> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'offset spécifié en little-endian. Le comportement est indéfini lorsque value est autre chose qu'un nombre JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeFloatLE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer bb fe 4a 4f>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeFloatLE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer bb fe 4a 4f>buf.writeInt8(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert a été supprimé et il n’y a plus de coercition implicite de l’offset en uint32. |
| v0.5.0 | Ajoutée dans : v0.5.0 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 1. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié. value doit être un entier signé valide de 8 bits. Le comportement est indéfini lorsque value est autre chose qu’un entier signé de 8 bits.
value est interprété et écrit comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt8(2, 0);
buf.writeInt8(-2, 1);
console.log(buf);
// Affiche : <Buffer 02 fe>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(2);
buf.writeInt8(2, 0);
buf.writeInt8(-2, 1);
console.log(buf);
// Affiche : <Buffer 02 fe>buf.writeInt16BE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | noAssert a été supprimé et il n’y a plus de coercition implicite de l’offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l'offset spécifié en big-endian. La value doit être un entier signé valide de 16 bits. Le comportement est indéfini lorsque value est autre chose qu’un entier signé de 16 bits.
La value est interprétée et écrite comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt16BE(0x0102, 0);
console.log(buf);
// Affiche : <Buffer 01 02>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(2);
buf.writeInt16BE(0x0102, 0);
console.log(buf);
// Affiche : <Buffer 01 02>buf.writeInt16LE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et de la coercion implicite de l’offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en little-endian. La value doit être un entier signé 16 bits valide. Le comportement est indéfini lorsque value est autre chose qu’un entier signé 16 bits.
La value est interprétée et écrite comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt16LE(0x0304, 0);
console.log(buf);
// Prints: <Buffer 04 03>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(2);
buf.writeInt16LE(0x0304, 0);
console.log(buf);
// Prints: <Buffer 04 03>buf.writeInt32BE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et de la coercion implicite de l’offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en big-endian. La value doit être un entier signé 32 bits valide. Le comportement est indéfini lorsque value est autre chose qu’un entier signé 32 bits.
La value est interprétée et écrite comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeInt32BE(0x01020304, 0);
console.log(buf);
// Prints: <Buffer 01 02 03 04>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeInt32BE(0x01020304, 0);
console.log(buf);
// Prints: <Buffer 01 02 03 04>buf.writeInt32LE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajouté dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit value dans buf à l’offset spécifié en little-endian. La value doit être un entier signé 32 bits valide. Le comportement est indéfini lorsque value est autre chose qu’un entier signé 32 bits.
La value est interprétée et écrite comme un entier signé en complément à deux.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeInt32LE(0x05060708, 0);
console.log(buf);
// Affiche : <Buffer 08 07 06 05>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeInt32LE(0x05060708, 0);
console.log(buf);
// Affiche : <Buffer 08 07 06 05>buf.writeIntBE(value, offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l’offset et de byteLength en uint32. |
| v0.11.15 | Ajouté dans : v0.11.15 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d’octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d’octets à écrire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
offsetplus le nombre d’octets écrits.
Écrit byteLength octets de value dans buf à l’offset spécifié en big-endian. Prend en charge jusqu’à 48 bits de précision. Le comportement est indéfini lorsque value est autre chose qu’un entier signé.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Affiche : <Buffer 12 34 56 78 90 ab>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(6);
buf.writeIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Affiche : <Buffer 12 34 56 78 90 ab>buf.writeIntLE(value, offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset et de byteLength en uint32. |
| v0.11.15 | Ajoutée dans : v0.11.15 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à écrire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit byteLength octets de value dans buf à l'emplacement offset spécifié en little-endian. Supporte jusqu'à 48 bits de précision. Le comportement est indéfini lorsque value est autre chose qu'un entier signé.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(6);
buf.writeIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>buf.writeUInt8(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom de buf.writeUint8(). |
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.5.0 | Ajoutée dans : v0.5.0 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 1. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'emplacement offset spécifié. value doit être un entier non signé de 8 bits valide. Le comportement est indéfini lorsque value est autre chose qu'un entier non signé de 8 bits.
Cette fonction est également disponible sous l'alias writeUint8.
import { Buffer } from 'node: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>const { Buffer } = require('node: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>buf.writeUInt16BE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.writeUint16BE(). |
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'aide de l'offset spécifié en big-endian. La value doit être un entier non signé de 16 bits valide. Le comportement est indéfini lorsque value est autre chose qu'un entier non signé de 16 bits.
Cette fonction est également disponible sous l'alias writeUint16BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer de ad be ef>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer de ad be ef>buf.writeUInt16LE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible en tant que buf.writeUint16LE(). |
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 2. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'aide de l'offset spécifié en little-endian. La value doit être un entier non signé de 16 bits valide. Le comportement est indéfini lorsque value est autre chose qu'un entier non signé de 16 bits.
Cette fonction est également disponible sous l'alias writeUint16LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer ad de ef be>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer ad de ef be>buf.writeUInt32BE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom de buf.writeUint32BE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'aide de l'offset spécifié en big-endian. La value doit être un entier non signé de 32 bits valide. Le comportement est indéfini lorsque value est différent d'un entier non signé de 32 bits.
Cette fonction est également disponible sous l'alias writeUint32BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32BE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer fe ed fa ce>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32BE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer fe ed fa ce>buf.writeUInt32LE(value[, offset])
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom de buf.writeUint32LE(). |
| v10.0.0 | Suppression de noAssert et de la coercition implicite de l'offset en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - 4. Par défaut :0.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit value dans buf à l'aide de l'offset spécifié en little-endian. La value doit être un entier non signé de 32 bits valide. Le comportement est indéfini lorsque value est différent d'un entier non signé de 32 bits.
Cette fonction est également disponible sous l'alias writeUint32LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32LE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer ce fa ed fe>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32LE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer ce fa ed fe>buf.writeUIntBE(value, offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom buf.writeUintBE(). |
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset et de byteLength en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à écrire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit byteLength octets de value dans buf à l' offset spécifié en big-endian. Prend en charge jusqu'à 48 bits de précision. Le comportement est indéfini lorsque value est autre chose qu'un entier non signé.
Cette fonction est également disponible sous l'alias writeUintBE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeUIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer 12 34 56 78 90 ab>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(6);
buf.writeUIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer 12 34 56 78 90 ab>buf.writeUIntLE(value, offset, byteLength)
[Historique]
| Version | Modifications |
|---|---|
| v14.9.0, v12.19.0 | Cette fonction est également disponible sous le nom buf.writeUintLE(). |
| v10.0.0 | Suppression de noAssert et plus de coercition implicite de l'offset et de byteLength en uint32. |
| v0.5.5 | Ajoutée dans : v0.5.5 |
value<integer> Nombre à écrire dansbuf.offset<integer> Nombre d'octets à ignorer avant de commencer à écrire. Doit satisfaire0 \<= offset \<= buf.length - byteLength.byteLength<integer> Nombre d'octets à écrire. Doit satisfaire0 \< byteLength \<= 6.- Retourne : <integer>
offsetplus le nombre d'octets écrits.
Écrit byteLength octets de value dans buf à l' offset spécifié en little-endian. Prend en charge jusqu'à 48 bits de précision. Le comportement est indéfini lorsque value est autre chose qu'un entier non signé.
Cette fonction est également disponible sous l'alias writeUintLE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeUIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>const { Buffer } = require('node:buffer');
const buf = Buffer.allocUnsafe(6);
buf.writeUIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>new Buffer(array)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | L'appel à ce constructeur émet un avertissement de dépréciation lorsqu'il est exécuté à partir de code situé en dehors du répertoire node_modules. |
| v7.2.1 | L'appel à ce constructeur n'émet plus d'avertissement de dépréciation. |
| v7.0.0 | L'appel à ce constructeur émet désormais un avertissement de dépréciation. |
| v6.0.0 | Déprécié depuis : v6.0.0 |
[Stable: 0 - Déprécié]
Stable: 0 Stabilité: 0 - Déprécié : Utilisez plutôt Buffer.from(array).
array<integer[]> Un tableau d'octets à copier.
Voir Buffer.from(array).
new Buffer(arrayBuffer[, byteOffset[, length]])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | L'appel à ce constructeur émet un avertissement de dépréciation lorsqu'il est exécuté à partir de code situé en dehors du répertoire node_modules. |
| v7.2.1 | L'appel à ce constructeur n'émet plus d'avertissement de dépréciation. |
| v7.0.0 | L'appel à ce constructeur émet désormais un avertissement de dépréciation. |
| v6.0.0 | Les paramètres byteOffset et length sont désormais pris en charge. |
| v6.0.0 | Déprécié depuis : v6.0.0 |
| v3.0.0 | Ajouté dans : v3.0.0 |
[Stable: 0 - Déprécié]
Stable: 0 Stabilité: 0 - Déprécié : Utilisez plutôt Buffer.from(arrayBuffer[, byteOffset[, length]]).
arrayBuffer<ArrayBuffer> | <SharedArrayBuffer> UnArrayBuffer,SharedArrayBufferou la propriété.bufferd'unTypedArray.byteOffset<integer> Index du premier octet à exposer. Par défaut :0.length<integer> Nombre d'octets à exposer. Par défaut :arrayBuffer.byteLength - byteOffset.
Voir Buffer.from(arrayBuffer[, byteOffset[, length]]).
new Buffer(buffer)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | L'appel à ce constructeur émet un avertissement de dépréciation lorsqu'il est exécuté à partir d'un code en dehors du répertoire node_modules. |
| v7.2.1 | L'appel à ce constructeur n'émet plus d'avertissement de dépréciation. |
| v7.0.0 | L'appel à ce constructeur émet désormais un avertissement de dépréciation. |
| v6.0.0 | Déprécié depuis : v6.0.0 |
[Stable : 0 - Déprécié]
Stable : 0 Stabilité : 0 - Déprécié : Utilisez Buffer.from(buffer) à la place.
buffer<Buffer> | <Uint8Array> UnBufferexistant ouUint8Arrayà partir duquel copier les données.
Voir Buffer.from(buffer).
new Buffer(size)
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | L'appel à ce constructeur émet un avertissement de dépréciation lorsqu'il est exécuté à partir d'un code en dehors du répertoire node_modules. |
| v8.0.0 | new Buffer(size) renverra par défaut une mémoire remplie de zéros. |
| v7.2.1 | L'appel à ce constructeur n'émet plus d'avertissement de dépréciation. |
| v7.0.0 | L'appel à ce constructeur émet désormais un avertissement de dépréciation. |
| v6.0.0 | Déprécié depuis : v6.0.0 |
[Stable : 0 - Déprécié]
Stable : 0 Stabilité : 0 - Déprécié : Utilisez Buffer.alloc() à la place (voir aussi Buffer.allocUnsafe()).
size<integer> La longueur souhaitée du nouveauBuffer.
Voir Buffer.alloc() et Buffer.allocUnsafe(). Cette variante du constructeur est équivalente à Buffer.alloc().
new Buffer(string[, encoding])
[Historique]
| Version | Modifications |
|---|---|
| v10.0.0 | L'appel à ce constructeur émet un avertissement de dépréciation lorsqu'il est exécuté à partir d'un code en dehors du répertoire node_modules. |
| v7.2.1 | L'appel à ce constructeur n'émet plus d'avertissement de dépréciation. |
| v7.0.0 | L'appel à ce constructeur émet désormais un avertissement de dépréciation. |
| v6.0.0 | Déprécié depuis : v6.0.0 |
[Stable: 0 - Déprécié]
Stable: 0 Stabilité: 0 - Déprécié : Utilisez Buffer.from(string[, encoding]) à la place.
Voir Buffer.from(string[, encoding]).
Classe : File
[Historique]
| Version | Modifications |
|---|---|
| v23.0.0 | Rend les instances File clonables. |
| v20.0.0 | N'est plus expérimental. |
| v19.2.0, v18.13.0 | Ajouté dans : v19.2.0, v18.13.0 |
- Étend : <Blob>
Un File fournit des informations sur les fichiers.
new buffer.File(sources, fileName[, options])
Ajouté dans : v19.2.0, v18.13.0
sources<string[]> | <ArrayBuffer[]> | <TypedArray[]> | <DataView[]> | <Blob[]> | <File[]> Un tableau d'objets string, <ArrayBuffer>, <TypedArray>, <DataView>, <File> ou <Blob>, ou tout mélange de tels objets, qui seront stockés dans leFile.fileName<string> Le nom du fichier.options<Object>endings<string> L'une des valeurs'transparent'ou'native'. Lorsque la valeur est définie sur'native', les fins de ligne dans les parties sources de chaîne seront converties en fin de ligne native de la plateforme, comme spécifié parrequire('node:os').EOL.type<string> Le type de contenu du fichier.lastModified<number> La date de dernière modification du fichier. Par défaut :Date.now().
file.name
Ajouté dans : v19.2.0, v18.13.0
- Type : <string>
Le nom du File.
file.lastModified
Ajouté dans : v19.2.0, v18.13.0
- Type : <number>
La date de dernière modification du File.
API du module node:buffer
Bien que l'objet Buffer soit disponible en tant qu'objet global, il existe des API supplémentaires liées à Buffer qui ne sont disponibles que via le module node:buffer accessible à l'aide de require('node:buffer').
buffer.atob(data)
Ajouté dans : v15.13.0, v14.17.0
[Stable: 3 - Legacy]
Stable: 3 Stability: 3 - Hérité. Utilisez Buffer.from(data, 'base64') à la place.
data<any> La chaîne d'entrée encodée en Base64.
Décode une chaîne de données encodées en Base64 en octets et encode ces octets dans une chaîne en utilisant Latin-1 (ISO-8859-1).
Les data peuvent être n'importe quelle valeur JavaScript qui peut être forcée en une chaîne.
Cette fonction est uniquement fournie pour la compatibilité avec les anciennes API de la plateforme Web et ne doit jamais être utilisée dans un nouveau code, car elle utilise des chaînes pour représenter des données binaires et précède l'introduction des tableaux typés en JavaScript. Pour le code s'exécutant à l'aide des API Node.js, la conversion entre des chaînes encodées en base64 et des données binaires doit être effectuée à l'aide de Buffer.from(str, 'base64') et buf.toString('base64').
buffer.btoa(data)
Ajouté dans : v15.13.0, v14.17.0
[Stable: 3 - Legacy]
Stable: 3 Stability: 3 - Hérité. Utilisez buf.toString('base64') à la place.
data<any> Une chaîne ASCII (Latin1).
Décode une chaîne en octets en utilisant Latin-1 (ISO-8859) et encode ces octets dans une chaîne en utilisant Base64.
Les data peuvent être n'importe quelle valeur JavaScript qui peut être forcée en une chaîne.
Cette fonction est uniquement fournie pour la compatibilité avec les anciennes API de la plateforme Web et ne doit jamais être utilisée dans un nouveau code, car elle utilise des chaînes pour représenter des données binaires et précède l'introduction des tableaux typés en JavaScript. Pour le code s'exécutant à l'aide des API Node.js, la conversion entre des chaînes encodées en base64 et des données binaires doit être effectuée à l'aide de Buffer.from(str, 'base64') et buf.toString('base64').
buffer.isAscii(input)
Ajouté dans : v19.6.0, v18.15.0
- input <Buffer> | <ArrayBuffer> | <TypedArray> L'entrée à valider.
- Renvoie : <boolean>
Cette fonction renvoie true si input contient uniquement des données valides encodées en ASCII, y compris le cas où input est vide.
Lève une exception si l'entrée input est un tampon de tableau détaché.
buffer.isUtf8(input)
Ajouté dans : v19.4.0, v18.14.0
- input <Buffer> | <ArrayBuffer> | <TypedArray> L'entrée à valider.
- Renvoie : <boolean>
Cette fonction renvoie true si input contient uniquement des données valides encodées en UTF-8, y compris le cas où input est vide.
Lève une exception si l'entrée input est un tampon de tableau détaché.
buffer.INSPECT_MAX_BYTES
Ajouté dans : v0.5.4
- <integer> Par défaut :
50
Renvoie le nombre maximum d'octets qui seront renvoyés lorsque buf.inspect() est appelé. Ceci peut être substitué par les modules utilisateurs. Voir util.inspect() pour plus de détails sur le comportement de buf.inspect().
buffer.kMaxLength
Ajouté dans : v3.0.0
- <integer> La taille maximale autorisée pour une seule instance de
Buffer.
Un alias pour buffer.constants.MAX_LENGTH.
buffer.kStringMaxLength
Ajouté dans : v3.0.0
- <integer> La longueur maximale autorisée pour une seule instance
string.
Un alias pour buffer.constants.MAX_STRING_LENGTH.
buffer.resolveObjectURL(id)
Ajouté dans : v16.7.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - Expérimental
id<string> Une chaîne d'URL'blob:nodedata:...renvoyée par un appel antérieur àURL.createObjectURL().- Retourne : <Blob>
Résout un 'blob:nodedata:...' un objet <Blob> associé enregistré à l'aide d'un appel antérieur à URL.createObjectURL().
buffer.transcode(source, fromEnc, toEnc)
[Historique]
| Version | Modifications |
|---|---|
| v8.0.0 | Le paramètre source peut désormais être un Uint8Array. |
| v7.1.0 | Ajouté dans : v7.1.0 |
source<Buffer> | <Uint8Array> Une instanceBufferouUint8Array.fromEnc<string> L'encodage actuel.toEnc<string> L'encodage cible.- Retourne : <Buffer>
Réencode l'instance Buffer ou Uint8Array donnée d'un encodage de caractères à un autre. Renvoie une nouvelle instance Buffer.
Lève une exception si fromEnc ou toEnc spécifient des encodages de caractères non valides ou si la conversion de fromEnc vers toEnc n'est pas autorisée.
Les encodages pris en charge par buffer.transcode() sont : 'ascii', 'utf8', 'utf16le', 'ucs2', 'latin1' et 'binary'.
Le processus de transcodage utilisera des caractères de substitution si une séquence d'octets donnée ne peut pas être correctement représentée dans l'encodage cible. Par exemple :
import { Buffer, transcode } from 'node:buffer';
const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii');
console.log(newBuf.toString('ascii'));
// Prints: '?'const { Buffer, transcode } = require('node:buffer');
const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii');
console.log(newBuf.toString('ascii'));
// Prints: '?'Étant donné que le signe Euro (€) n'est pas représentable en US-ASCII, il est remplacé par ? dans le Buffer transcoder.
Classe : SlowBuffer
Déconseillé depuis la version : v6.0.0
[Stable: 0 - Déconseillé]
Stable: 0 Stability: 0 - Déconseillé : Utilisez Buffer.allocUnsafeSlow() à la place.
Voir Buffer.allocUnsafeSlow(). Cela n'a jamais été une classe dans le sens où le constructeur a toujours renvoyé une instance Buffer, plutôt qu'une instance SlowBuffer.
new SlowBuffer(size)
Déconseillé depuis la version : v6.0.0
[Stable: 0 - Déconseillé]
Stable: 0 Stability: 0 - Déconseillé : Utilisez Buffer.allocUnsafeSlow() à la place.
size<integer> La longueur souhaitée du nouveauSlowBuffer.
Voir Buffer.allocUnsafeSlow().
Constantes de Buffer
Ajouté dans : v8.2.0
buffer.constants.MAX_LENGTH
[Historique]
| Version | Modifications |
|---|---|
| v22.0.0 | La valeur est passée à 2 - 1 sur les architectures 64 bits. |
| v15.0.0 | La valeur est passée à 2 sur les architectures 64 bits. |
| v14.0.0 | La valeur est passée de 2 - 1 à 2 - 1 sur les architectures 64 bits. |
| v8.2.0 | Ajouté dans : v8.2.0 |
- <integer> La taille maximale autorisée pour une seule instance
Buffer.
Sur les architectures 32 bits, cette valeur est actuellement de 2 - 1 (environ 1 Gio).
Sur les architectures 64 bits, cette valeur est actuellement de 2 - 1 (environ 8 Pio).
Elle reflète v8::TypedArray::kMaxLength en interne.
Cette valeur est également disponible sous le nom buffer.kMaxLength.
buffer.constants.MAX_STRING_LENGTH
Ajouté dans : v8.2.0
- <integer> La longueur maximale autorisée pour une seule instance
string.
Représente la plus grande length qu'une primitive string peut avoir, comptée en unités de code UTF-16.
Cette valeur peut dépendre du moteur JS utilisé.
Buffer.from(), Buffer.alloc() et Buffer.allocUnsafe()
Dans les versions de Node.js antérieures à la version 6.0.0, les instances de Buffer étaient créées à l'aide de la fonction constructeur Buffer, qui alloue le Buffer renvoyé différemment selon les arguments fournis :
- Le fait de passer un nombre comme premier argument à
Buffer()(par exemple,new Buffer(10)) alloue un nouvel objetBufferde la taille spécifiée. Avant Node.js 8.0.0, la mémoire allouée pour ces instances deBuffern'est pas initialisée et peut contenir des données sensibles. Ces instances deBufferdoivent ensuite être initialisées en utilisant soitbuf.fill(0), soit en écrivant dans l'intégralité duBufferavant de lire les données duBuffer. Bien que ce comportement soit intentionnel afin d'améliorer les performances, l'expérience de développement a démontré qu'une distinction plus explicite est nécessaire entre la création d'unBufferrapide mais non initialisé et la création d'unBufferplus lent mais plus sûr. Depuis Node.js 8.0.0,Buffer(num)etnew Buffer(num)renvoient unBufferavec une mémoire initialisée. - Le fait de passer une chaîne de caractères, un tableau ou un
Buffercomme premier argument copie les données de l'objet passé dans leBuffer. - Le fait de passer un
ArrayBufferou unSharedArrayBufferrenvoie unBufferqui partage la mémoire allouée avec le tampon de tableau donné.
Étant donné que le comportement de new Buffer() est différent selon le type du premier argument, des problèmes de sécurité et de fiabilité peuvent être introduits par inadvertance dans les applications lorsque la validation des arguments ou l'initialisation de Buffer n'est pas effectuée.
Par exemple, si un attaquant peut amener une application à recevoir un nombre là où une chaîne de caractères est attendue, l'application peut appeler new Buffer(100) au lieu de new Buffer("100"), ce qui l'amène à allouer un tampon de 100 octets au lieu d'allouer un tampon de 3 octets avec le contenu "100". Ceci est généralement possible en utilisant des appels d'API JSON. Étant donné que JSON fait la distinction entre les types numériques et les types chaînes de caractères, il permet l'injection de nombres là où une application naïvement écrite qui ne valide pas suffisamment ses entrées pourrait s'attendre à toujours recevoir une chaîne de caractères. Avant Node.js 8.0.0, le tampon de 100 octets pouvait contenir des données préexistantes arbitraires en mémoire, et pouvait donc être utilisé pour exposer des secrets en mémoire à un attaquant distant. Depuis Node.js 8.0.0, l'exposition de la mémoire ne peut pas se produire car les données sont remplies de zéros. Cependant, d'autres attaques sont toujours possibles, comme le fait de provoquer l'allocation de très grands tampons par le serveur, entraînant une dégradation des performances ou un crash en raison de l'épuisement de la mémoire.
Pour rendre la création d'instances de Buffer plus fiable et moins sujette aux erreurs, les différentes formes du constructeur new Buffer() ont été dépréciées et remplacées par les méthodes distinctes Buffer.from(), Buffer.alloc() et Buffer.allocUnsafe().
Les développeurs doivent migrer toutes les utilisations existantes des constructeurs new Buffer() vers l'une de ces nouvelles API.
Buffer.from(array)renvoie un nouveauBufferqui contient une copie des octets fournis.Buffer.from(arrayBuffer[, byteOffset[, length]])renvoie un nouveauBufferqui partage la même mémoire allouée que l'ArrayBufferdonné.Buffer.from(buffer)renvoie un nouveauBufferqui contient une copie du contenu duBufferdonné.Buffer.from(string[, encoding])renvoie un nouveauBufferqui contient une copie de la chaîne de caractères fournie.Buffer.alloc(size[, fill[, encoding]])renvoie un nouveauBufferinitialisé de la taille spécifiée. Cette méthode est plus lente queBuffer.allocUnsafe(size)mais garantit que les instances deBuffernouvellement créées ne contiennent jamais d'anciennes données potentiellement sensibles. UneTypeErrorsera levée sisizen'est pas un nombre.Buffer.allocUnsafe(size)etBuffer.allocUnsafeSlow(size)renvoient chacun un nouveauBuffernon initialisé de lasizespécifiée. Étant donné que leBuffern'est pas initialisé, le segment de mémoire alloué peut contenir d'anciennes données potentiellement sensibles.
Les instances de Buffer renvoyées par Buffer.allocUnsafe(), Buffer.from(string), Buffer.concat() et Buffer.from(array) peuvent être allouées à partir d'un pool de mémoire interne partagé si la size est inférieure ou égale à la moitié de Buffer.poolSize. Les instances renvoyées par Buffer.allocUnsafeSlow() n'utilisent jamais le pool de mémoire interne partagé.
L'option de ligne de commande --zero-fill-buffers
Ajouté dans : v5.10.0
Node.js peut être démarré en utilisant l'option de ligne de commande --zero-fill-buffers pour que toutes les instances Buffer nouvellement allouées soient remplies de zéros par défaut lors de leur création. Sans cette option, les buffers créés avec Buffer.allocUnsafe(), Buffer.allocUnsafeSlow() et new SlowBuffer(size) ne sont pas remplis de zéros. L'utilisation de cet indicateur peut avoir un impact négatif mesurable sur les performances. Utilisez l'option --zero-fill-buffers uniquement lorsque cela est nécessaire pour garantir que les instances Buffer nouvellement allouées ne contiennent pas d'anciennes données potentiellement sensibles.
$ node --zero-fill-buffers
> Buffer.allocUnsafe(5);
<Buffer 00 00 00 00 00>Qu'est-ce qui rend Buffer.allocUnsafe() et Buffer.allocUnsafeSlow() "non sécurisés" ?
Lors de l'appel de Buffer.allocUnsafe() et Buffer.allocUnsafeSlow(), le segment de mémoire allouée est non initialisé (il n'est pas rempli de zéros). Bien que cette conception rende l'allocation de mémoire assez rapide, le segment de mémoire allouée peut contenir d'anciennes données potentiellement sensibles. L'utilisation d'un Buffer créé par Buffer.allocUnsafe() sans complètement écraser la mémoire peut permettre à ces anciennes données d'être divulguées lorsque la mémoire Buffer est lue.
Bien qu'il existe des avantages clairs en termes de performances à utiliser Buffer.allocUnsafe(), des précautions supplémentaires doivent être prises afin d'éviter d'introduire des vulnérabilités de sécurité dans une application.