我需要通过一个二进制文件循环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);
虽然我可以在这里阅读,但我可以这样做:
Float32Array Float32Array(
ArrayBuffer buffer,
optional unsigned long byteOffset,
optional unsigned long length
);
问题:为什么在我的ArrayBuffer上
声明第一个Float32Array
视图后我的循环失败了?response_offer