如何将Buffer转换为int的node.js数组

时间:2018-01-15 15:35:34

标签: javascript arrays node.js buffer

我有一个c#应用程序,它将一个double数组转换为一个byte数据的字节数组,并转换为一个Buffer.js服务器(按惯例似乎推荐)。我想将此缓冲区转换为最初存储在double数组中的数字数组,我已经查看了其他问题,但它们要么不适用,要么就是不起作用([... buf],Array .prototype.slice.call(buf,0)等。

基本上我有一个包含数据的var buf,我希望这是一个整数数组,有什么方法可以做到这一点吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

首先,您需要知道数组中的数字。我假设它们是32位整数。首先,在缓冲区周围创建封装类型数组:

 // @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);

请注意,如果C#的数组是Big Endian,那么东西可能会变得更复杂,但我认为不是。根据{{​​3}},你应该没事。

答案 1 :(得分:0)

我设法使用DataView进行此操作并使用它来迭代缓冲区,这是我之前尝试过的,但由于某些原因它现在没有工作但是现在。