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