Почему значение не получает назначенное значение, как ожидалось? Ошибок не возникает.Невозможно назначить значения для типированного буфера массива
fs = require('fs');
var path="data.dat";
var f = fs.createReadStream(path,{highWaterMark:1024*1024*128})
var stat = fs.statSync(path);
var stream = fs.createReadStream(path,{start:0,end:stat.size-1});
var dat = new Float64Array(stat.size);
var idx = 0;
stream.on('data',(chunk)=>{
var temp = new Float64Array((new Uint8Array(chunk)).buffer);
for(var i = 0; i< temp.length;++i){
dat[idx++]=temp[i];
console.log(temp[i]); //this will log the expected values
console.log(dat[idx]); //this will log a bunch of 0
}
});
stream.on('end',function(){
//do_stuff(dat);
});
Чтобы напечатать значение * dat *, вы должны использовать * idx * и не увеличивать его снова. –
К сожалению, это была ошибка копирования и вставки (исправлено). Однако он все еще не работает. Весь массив - это пучок 0. – TeeraMusic
У вас увеличенный idx дважды. Чтобы упростить прохождение кода, просто удалите inline ++ и просто выполните еще одну строку idx ++ в конце блока. Также глядя на код, вы не учли какую-либо длину Float64. – Keith