Javascript Float32Array fi

2024-10-04 03:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

不是正确的价值观:

^{pr2}$

代码:

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();

Tags: 文件comurlnewbytesvarbuffer错误
1条回答
网友
1楼 · 发布于 2024-10-04 03:15:55

刚刚测试过,这是一个字节的小端顺序问题。对我来说,只需稍加修改,little endian的参数为true:

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

相关问题 更多 >