从纯 JavaScript 中的二进制文件 blob 中读取标头值

问题描述

假设我有一个保存文件bufferArray 对象 buff。 假设文件一个文件头,文件属性大小不同,偏移量不同。

例如:

偏移|长度(字节)|属性

所以,我想阅读那些标题条目。 ArrayBuffer 不能在 JS 中直接访问或修改。我们必须使用 ArrayBufferView

但是条目的大小不同:我们要读取 2、4、8 个字节(可能还有其他大小)的值。随后,我是否需要使用多个 ArrayBufferView 从 1 个文件中读取标题

const buff = new ArrayBuffer();

var byte2 = new Uint16Array(buffer,byteOffset,length);
var byte4 = new Uint32Array(buffer,length);
var byte8 = ? // JS does not support 64 bit Ints. What should I do?

var signature = byte4[0];
var headerSize = byte2[2];
var fiLeversion = byte2[3];

property1 = ? // no 64 bit Int support in JS
property2 = ? // no 64 bit Int support in JS

所以,我的问题是:有多个 ArrayBufferView 是要走的路,还是有更优雅的方法?比如,一次性设置一个 JS 等价于 C 结构。

另外,如何从 JS 的文件头中读取和存储 64 位(8 字节)整数? (对不起,第二个子问题,但对于这个应用案例,它们确实是相互关联的。也许,发布 2 个单独的答案以获得额外的分数。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)