如果二进制数据"4 byte single format"是什么意思,如何在 JavaScript 中读取它?



我必须读取一个二进制文件,据说是编码的4 byte single format,从来没有使用二进制数据,我不知道这是什么意思。

我可以在JavaScript中读取包含二进制数据的文件:

 d = new FileReader();
 d.onload = function (e) {
   var i, len;
   // grab a "chunk"
   response_buffer = e.target.result.slice(0, 1024);
   view = new DataView(response_buffer);
   for (i = 0, len = response_buffer.byteLength; i < len; i += 1) {
      // hmhm
      console.log(view.getUint8(i));
   }
}
d.readAsArrayBuffer(some_file);

从0到1023运行循环,我在控制台上得到数字,但我不知道这是否是我解码的数据:-)

:
什么是4字节单格式,我如何正确访问数据?在"人类可理解的语言"中,getUint8()getint8()getInt32()有什么区别?

谢谢!

4字节单格式在计算机科学中不是一个通常理解的术语。

如果你期望你的文件是一系列单精度浮点数,那么我可能会猜测"4字节单格式"意味着单精度浮点数,因为每个都是4字节长。

您需要使用getFloat32()从二进制流中解析单精度浮点数。


如果你想用getFloat32()解析1024个数字,那么你需要1024*4个字节,并且你需要每次将for循环推进4个字节,因为getFloat32()一次处理4个字节:

d = new FileReader();
 d.onload = function (e) {
   var i, len;
   // grab a "chunk"
   response_buffer = e.target.result.slice(0, 1024 * 4);
   view = new DataView(response_buffer);
   for (i = 0, len = response_buffer.byteLength; i < len; i += 4) {
      // hmhm
      console.log(view.getFloat32(i));
   }
}
d.readAsArrayBuffer(some_file);

另外,请注意IE10和IOS 5没有.slice()方法的ArrayBuffer如果你打算在一个一般的网页中使用它

最新更新