Je veux convertir les données du tampon en tableau d'octets. Voici ce que j'ai essayé
import * as fs from 'fs';
[...]
event:(data) => {
fs.readFile(data, function(err, data) {
var arrByte= new Uint8Array(data)
var binaryData= new Blob([arrByte])
console.log(binaryData)
}
}
Je n'ai pas encore ce travail d'où mon poste. J'aimerais beaucoup savoir ce que je fais qui ne va pas.
Les documents Buffer
sont très instructifs :
Avant l'introduction de
TypedArray
, le langage JavaScript ne disposait d'aucun mécanisme pour lire ou manipuler les flux de données binaires. La classeBuffer
a été introduite dans le cadre de l'API Node.js pour permettre l'interaction avec les flux d'octets dans TCP flux, opérations de système de fichiers et autres contextes).Avec
TypedArray
maintenant disponible, la classeBuffer
implémente l'APIUint8Array
d'une manière qui est plus optimisé et adapté à Node.js.…
Les instances de tampon sont également des instances de
Uint8Array
. Cependant, il existe de subtiles incompatibilités avecTypedArray
. Par exemple, tandis queArrayBuffer#slice()
crée une copie de la tranche, l'implémentation deBuffer#slice()
crée une vue sur leBuffer
existant sans copier, ce qui rendBuffer#slice()
beaucoup plus efficace.Il est également possible de créer de nouvelles instances de TypedArray à partir d'un tampon avec les mises en garde suivantes:
La mémoire de l'objet
Buffer
est copiée dans leTypedArray
, non partagée.La mémoire de l'objet
Buffer
est interprétée comme un tableau d'éléments distincts et non comme un tableau d'octets du type cible. C'est-à-dire quenew Uint32Array(Buffer.from([1, 2, 3, 4]))
crée un élément à 4 élémentsUint32Array
Avec des éléments[1, 2, 3, 4]
, Pas unUint32Array
Avec un seul élément[0x1020304]
Ou[0x4030201]
.
Ils continuent à mentionner TypedArray.from
, qui dans le nœud accepte Buffer
s, donc la manière "correcte" est:
var arrByte = Uint8Array.from(data)
... cependant, cela ne devrait pas du tout être nécessaire car un Buffer
est un Uint8Array
et new UintArray(someBuffer)
fonctionne très bien.
Il n'y a pas non plus de contexte dans votre question, mais Blob
n'existe pas dans le nœud, et vous ne devriez pas en avoir besoin de toute façon, puisque Buffer
vous donne déjà un accès brut aux données binaires et d'autres méthodes fs
vous permettent de lire et d'écrire des fichiers.
import * as fs from 'fs';
[...]
event:(data) => {
fs.readFile(data, function(err, data) {
var arrByte= new Uint8Array.from(Buffer.from(data))
var binaryData= new Blob([arrByte])
if (err) throw err;
console.log(binaryData)
}
}