2016-07-23 2 views
0

Так что я эту функцию, пришедшего из сценария NodeJS:Buffer + writeUInt32LE от NoteJS к Javascript

function WearToFloat(value) 
{ 
    buf = new Buffer(4); 
    buf.writeUInt32LE(+value, 0); 
    return buf.readFloatLE(0).toString(); 
} 

и мне нужно, чтобы перевести это в чистом Javascript, который может быть прочитан любым веб-браузером.

К сожалению, у меня нет абсолютно никаких знаний в NodeJS или буферах в JS, и я не могу понять с помощью документов.

Цель этой функции заключается в преобразовании значение, которое выглядит как 1054356424 в число флоат от 0 до 1 (в данном случае, 0,4222700595855713)

Любой ключ?

Редактировать: Кажется, что задан такой же вопрос here, но только с использованием библиотеки, и я не хочу загружать полную библиотеку только для этого, должен быть простой способ преобразования этой функции NodeJS в Javascript.

+0

Возможный дубликат [Конвертировать буфер для браузеров nodejs JavaScript] (http://stackoverflow.com/questions/8880571/convert-nodejs-buffer-to-browsers-javascript) –

ответ

1

Найдено!

function WearToFloat(value) 
{ 
    var buffer = new ArrayBuffer(4); 
    var dataview = new DataView(buffer); 
    dataView.setUint32(0,value); 
    return dataView.getFloat32(0); 
} 
+0

Вам может понадобиться установить 'setUInt32' 3-й параметр в true, чтобы переключить поведение endianness на« Little endian ». Док говорит, что по умолчанию предполагается большой эндиан. То же самое касается getFloat32 со своим вторым параметром. ';)' – Stphane

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