在Node.js中用.bin文件内容填充一个类型化数组

Fill a typed array with .bin file content in Node.js

本文关键字:一个 数组 类型化 填充 js Node 中用 bin 文件      更新时间:2024-06-11

在我的服务器文件系统上,我有一个目录,其中包含一些用16位整数填充的.bin文件。

如何在Node.js中加载具有特定.bin文件内容的Uint16Array变量?

我已经试过了:

var arrayFromBinFile = new Uint16Array('./myDirectoryContainingBinFiles/selectedFile.bin')

通过在node.js中使用console.log,我得到的只是:

{ 
  BYTES_PER_ELEMENT: 2,
  get: [Function: get],
  set: [Function: set],
  slice: [Function: slice],
  subarray: [Function: subarray],
  buffer: { slice: [Function: slice], byteLength: 0 },
  length: 0,
  byteOffset: 0,
  byteLength: 0 
}

我提出了以下解决方案

fs.readFile('./myDirectoryContainingBinFiles/selectedFile.bin', function(err, data)
{
    if (err) throw err;
    terrainData = new Uint16Array(toArrayBuffer(data));
});

其中toArrayBuffer函数,在从二进制NodeJS缓冲区转换为JavaScript ArrayBuffer的接受答案中报告,被定义为

function toArrayBuffer(buffer) {
    var ab = new ArrayBuffer(buffer.length);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buffer.length; ++i) {
        view[i] = buffer[i];
    }
    return ab;
}