2016-11-07 15 views
0

Почему значение не получает назначенное значение, как ожидалось? Ошибок не возникает.Невозможно назначить значения для типированного буфера массива

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); 
}); 
+0

Чтобы напечатать значение * dat *, вы должны использовать * idx * и не увеличивать его снова. –

+0

К сожалению, это была ошибка копирования и вставки (исправлено). Однако он все еще не работает. Весь массив - это пучок 0. – TeeraMusic

+0

У вас увеличенный idx дважды. Чтобы упростить прохождение кода, просто удалите inline ++ и просто выполните еще одну строку idx ++ в конце блока. Также глядя на код, вы не учли какую-либо длину Float64. – Keith

ответ

0

Urrgg ... Я чувствую себя глупо за вопрос. Ответ: console.log (dat [idx-1]);

+0

Правильно :), но не чувствую себя глупо, большинство вопросов похожи на это. –

+0

Я также сделал ошибку, пытаясь получить доступ к переменной за пределами .on ('end', которая заставляла меня казаться, что у меня просто была пучка 0s – TeeraMusic

 Смежные вопросы

  • Нет связанных вопросов^_^