我需要通过arrayBuffer
遍历二进制文件并检索1024个浮点集。我正在这样做:
// chunk_size = 1024
// chunk_len = 48
// response_buffer = ArrayBuffer
// response_buffer.byteLength = 49152
for (i = chunk_len; i > 0; i -= 1) {
switch (i) {
case (chunk_len):
// create view from last chunk of 1024 out of 49152 total
float_buffer = new Float32Array(response_buffer, ((i - 1) * chunk_size));
// add_data(net_len, float_buffer);
break;
case 0:
break;
default:
float_buffer = new Float32Array(response_buffer, ((i - 1) * chunk_size)), chunk_size);
//add_data(net_len, float_buffer);
break;
}
}
我的问题是,如果我在缓冲区的结尾第一次运行时调用了此方法:
// i - 1 = 47 * chunk_size
new Float32Array(response_buffer, ((i - 1) * chunk_size));
在下一次运行时,同一条语句失败:
new Float32Array(response_buffer, ((i - 1) * chunk_size), 1024);
尽管我可以阅读here,但是
我可以做这个:
Float32Array Float32Array(
ArrayBuffer buffer,
optional unsigned long byteOffset,
optional unsigned long length
);
题:
在
Float32Array
ArrayBuffer上声明第一个response_offer
视图后,为什么循环失败? 最佳答案
我认为您在“默认”案例的第一行中有一个额外的“)”。
float_buffer = new Float32Array(response_buffer, ((i - 1) * chunk_size)), chunk_size);
应该:
float_buffer = new Float32Array(response_buffer, ((i - 1) * chunk_size), chunk_size);
关于javascript - 如何以“4字节单个”/浮点数/IEEE 754编码数据的二进制数据读取ArrayBuffer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23850263/