将4个二进制字节转换为单精度浮点数到Number

时间:2017-07-21 22:19:21

标签: javascript node.js binary

我有一个存储在4个二进制字节中的单精度大端浮点数,我想将其解码为JS Number。这些字节是使用Ruby的Array#pack方法生成的,如:

[100.32].pack('g')  # "\x42\xC8\xA3\xD7"

使用npm binary package我可以将这些字节解码为32位无符号整数:

let binary = require('binary');  // npm install binary
let buf = new Buffer([0x42,0xc8,0xa3,0xd7]);
let val = binary.parse(buf).word32bu('foo').vars.foo;
console.log(val);
// 1120445399

......但这对我没有帮助。如何将1120445399[0x42,0xc8,0xa3,0xd7]转换为浮点数100.32

1 个答案:

答案 0 :(得分:2)

看起来它存储为浮点数,它是32位的。节点已经可以处理这些常见的数字解析/写入方案。在这种特殊情况下,您只需使用buf.readFloatBE(0)转换4个字节。