Vicci Garner
Vicci Garner

Reputation: 45

How to convert a Buffer to an array of ints node.js

I have a c# application that converts a double array to a byte array of data to a node.js server which is converted to a Buffer (as convention seems to recommend). I want to convert this buffer into an array of the numbers originally stored in the double array, I've had a look at other questions but they either aren't applicable or just don't work ([...buf], Array.prototype.slice.call(buf, 0) etc.).

Essentially I have a var buf which contains the data, I want this to be an array of integers, is there any way I can do this?

Thank you.

Upvotes: 0

Views: 4206

Answers (2)

Vicci Garner
Vicci Garner

Reputation: 45

I managed to do this with a DataView and used that to iterate over the buffer, something I'd tried before but for some reason didn't work but does now.

Upvotes: 0

Tomáš Zato
Tomáš Zato

Reputation: 53129

First, you need to know WHAT numbers are in the array. I'll assume they are 32bit integers. So first, create encapsulating Typed Array around the buffer:

 // @type {ArrayBuffer}
 var myBuffer = // get the bufffer from C#
 // Interprets byte array as 32 bit int array
 var myTypedArray = new Int32Array(myBuffer);
 // And if you really want standard JS array:
 var normalArray = [];
 // Push all numbers from buffer to Array
 normalArray.push.apply(normalArray, myTypedArray);

Note that stuff might get more complicated if the C#'s array is in Big Endian, but I assume it's not. According to this answer, you should be fine.

Upvotes: 1

Related Questions