2017-03-29 34 views
0

我想用javascript(由python編寫)讀取float32的二進制文件。 我得到了錯誤的值:Javascript Float32Array文件

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

預期的結果是在記錄'console'這裏 – guest271314

+0

我編輯的問題作出更加明確,其值是錯誤的 – daniel

回答

2

只是測試,它是字節的little-endian順序的問題。工作對我來說,只要稍微修改,對於小端參數真:

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