从服务器读取二进制文件并在javascript中解析它

时间:2014-03-28 21:56:58

标签: javascript binary-data

这是我的问题:

  • 服务器上有二进制文件(包含短int-16位)
  • 我想加载它并为图表创建数据(我使用http://dygraphs.com/ - 它必须是原生格式数组[[0,1],[1,2]])

我已尝试过此代码:

window.addEvent(
        "domready",
        function()
        {
            var dataRequest = new Request(
            {
                url: "data.dat",
                onSuccess: function(response)
                {
                    var timestart = new Date();

                    var tempArray = response.match(/.{2}/g);

                    for(var i=0; i<tempArray.length; ++i) {

                        graphDataArray[i] = [i, (tempArray[i].charCodeAt(0)<<8) + tempArray[i].charCodeAt(1) ];                 
                    }

                    new Dygraph(
                        document.getElementById("graphdiv"),
                          graphDataArray,
                          {}
                    );

                    document.getElementById("timemsg").innerHTML = "Generated in " + (new Date() - timestart).toString() + " ms";                       
                }
            }
            ).send();
);

它不起作用,因为charCodeAt()与二进制数据无关,它解释ASCII。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 以下是如何将二进制数据传输到浏览器:solution

然后,我简单地迭代槽数组并使用二进制移位运算符创建16位int并将其添加到格式化以适合图形库需求:

for (var i = 0; i < byteArray.byteLength; i+=2) {
  graphDataArray[counter] = [counter, (byteArray[i]<<8) + byteArray[i+1] ];
  counter++;    
}