LINUX.ORG.RU

История изменений

Исправление 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);
}