我有一个c#应用程序,它将一个double数组转换为一个byte数据的字节数组,并转换为一个Buffer.js服务器(按惯例似乎推荐)。我想将此缓冲区转换为最初存储在double数组中的数字数组,我已经查看了其他问题,但它们要么不适用,要么就是不起作用([... buf],Array .prototype.slice.call(buf,0)等。
基本上我有一个包含数据的var buf,我希望这是一个整数数组,有什么方法可以做到这一点吗?
谢谢。
答案 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进行此操作并使用它来迭代缓冲区,这是我之前尝试过的,但由于某些原因它现在没有工作但是现在。