我有一个存储在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
?
答案 0 :(得分:2)
看起来它存储为浮点数,它是32位的。节点已经可以处理这些常见的数字解析/写入方案。在这种特殊情况下,您只需使用buf.readFloatBE(0)
转换4个字节。