Javascript Float32Array文件

时间:2017-03-29 16:09:43

标签: javascript python binaryfiles

我想用javascript(由python编写)读取float32的二进制文件。 我得到了错误的值:

0,-428443616,-6.332091191811711e-23,-429492128,4.600602988224807e-41,0,0,0,4.618539608568165e-41,1.793662034335766e-43,-428443616,4.17232...

而不是正确的值:

0.00000000 0.80000001 -0.6000000 0.10000000...

代码:

var mRequest = new XMLHttpRequest();
var url="https://storage.googleapis.com/crackling-torch-8396.appspot.com/ac395516-96d0-4533-8e0e-efbc681902ee/studies/-KgPah7nxgHsVB26Nlaf/meshes/-KgPayhUOPYlMx12mn7m/shapes/GEOMFACE1_n.bin";

mRequest.open('GET', url);
mRequest.responseType = 'arraybuffer';

mRequest.onreadystatechange = function () {
    if (mRequest.readyState === 4) {
        // Get bytes
        var buffer = mRequest.response;
        var dataview = new DataView(buffer);
        // Create buffer (4 bytes / float)
        var mFloatArray = new Float32Array(buffer.byteLength / 4);
        // Copy floats
        for (var i = 0; i < mFloatArray.length; i++) 
        {
            mFloatArray[i] = dataview.getFloat32(i * 4); // At every 4th byte
        }
        console.log("mFloatArray "+mFloatArray);
        // Do something with mFloatArray
    }
};

mRequest.send();

1 个答案:

答案 0 :(得分:2)

刚刚测试过,这是字节的小端顺序问题。它对我有用,稍加修改,参数为小端的真实:

mFloatArray[i] = dataview.getFloat32(i * 4, true); // At every 4th byte