バッファデータをバイト配列に変換したい。これが私が試したことです
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)
}
}
私はまだこの仕事をしていないので、私の投稿です。私は自分が何をしているかを知りたいのですが、それは正しくありません。
TypedArray
が導入される前は、JavaScript言語にはバイナリデータのストリームを読み取ったり操作したりするメカニズムがありませんでした。Buffer
クラスはNode = js APIの一部として導入され、TCPストリーム、ファイルシステム操作、およびその他のコンテキストでオクテットストリームとの対話を可能にします。
TypedArray
が利用可能になったため、Buffer
クラスはUint8Array
APIをより適切な方法で実装しますNode.jsに最適化され、適しています。…
バッファインスタンスも
Uint8Array
インスタンスです。ただし、TypedArray
とはわずかに互換性がありません。たとえば、ArrayBuffer#slice()
はスライスのコピーを作成しますが、Buffer#slice()
の実装は既存のBuffer
をコピーせずにビューを作成し、Buffer#slice()
をさらに大きくします。効率的。次の警告を使用して、バッファから新しいTypedArrayインスタンスを作成することもできます。
Buffer
オブジェクトのメモリは、共有されず、TypedArray
にコピーされます。
Buffer
オブジェクトのメモリは、ターゲットタイプのバイト配列としてではなく、個別の要素の配列として解釈されます。つまり、new Uint32Array(Buffer.from([1, 2, 3, 4]))
は、単一の要素Uint32Array
または[1, 2, 3, 4]
を持つUint32Array
ではなく、要素[0x1020304]
を持つ4要素[0x4030201]
を作成します。
さらに、ノードでBuffer
sを受け入れる TypedArray.from
に言及するため、「正しい」方法は次のとおりです。
var arrByte = Uint8Array.from(data)
...ただし、Buffer
はUint8Array
であり、new UintArray(someBuffer)
は正常に機能するため、これはまったく必要ありません。
質問にもコンテキストはありませんが、Blob
はノードに存在しません。また、Buffer
は既にバイナリデータやその他のfs
メソッドを使用すると、ファイルを読み書きできます。
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)
}
}