История изменений
Исправление waker, (текущая версия) :
после кратковременного гугления, выяснилось что в ноде есть вот это:
buf.readFloatBE(offset[, noAssert])
buf.readFloatLE(offset[, noAssert])
т.е. писать свой конвертер не надо, просто из буфера выдергивай floats по нужному смещению в нужном формате.
если ты хочешь конвертировать вручную, то вот пример.
из файла читается массив floats (big-endian), в буфер. в буфере меняются байты местами, после чего из буфера float'ы уже достаются как little-endian. результат, как и ожидалось, корректный.
var fs = require('fs');
var buf = fs.readFileSync ("floats.bin");
for (var i = 0; i < buf.length; i+=4) {
var a = buf[i];
var b = buf[i+1];
var c = buf[i+2];
var d = buf[i+3];
buf[i] = d;
buf[i+1] = c;
buf[i+2] = b;
buf[i+3] = a;
var fl = buf.readFloatLE(i);
console.log (fl);
}
Исходная версия waker, :
после кратковременного гугления, выяснилось что в ноде есть вот это:
buf.readFloatBE(offset[, noAssert]) buf.readFloatLE(offset[, noAssert])
т.е. писать свой конвертер не надо, просто из буфера выдергивай floats по нужному смещению в нужном формате.
если ты хочешь конвертировать вручную, то вот пример.
из файла читается массив floats (big-endian), в буфер. в буфере меняются байты местами, после чего из буфера float'ы уже достаются как little-endian. результат, как и ожидалось, корректный.
var fs = require('fs');
var buf = fs.readFileSync ("floats.bin");
for (var i = 0; i < buf.length; i+=4) {
var a = buf[i];
var b = buf[i+1];
var c = buf[i+2];
var d = buf[i+3];
buf[i] = d;
buf[i+1] = c;
buf[i+2] = b;
buf[i+3] = a;
var fl = buf.readFloatLE(i);
console.log (fl);
}