Search code examples
javascriptnode.jstyped-arrays

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


On my server file system I have a directory which contains some .bin file filled with 16 bit integers.

How can I load a Uint16Array variable with the content of a specific .bin file in Node.js?

I already tried:

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

By using console.log in node.js all I get is:

{ 
  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 
}

Solution

  • I came up with the following solution

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

    Where the toArrayBuffer function, reported in the accepted answer of from Convert a binary NodeJS Buffer to JavaScript ArrayBuffer, is defined as

    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;
    }