NodeJS读取缓冲区二进制到浮动

时间:2020-12-31 22:29:34

标签: node.js arrays precision endianness bytebuffer

我有一个包含自定义字节信息的大型 DAT 文件,
我的任务是将解决方案转换为 JavaScript。
是为了使解决方案更加单一语言,并转换为无服务器云计算。

但是,我在转换此测试数据时遇到了问题。
应该返回浮点数的值,
但我似乎无法正确转换数字。

切片缓冲区输出为<Buffer 40 82 e2 31 d6 d7 2e 8d>
哪个应该返回 604.274335557087
但实际上返回 4.090111255645752

我现在不知所措。
有什么想法吗?


  fs.readFile(file, (err, data) => {

...
      // Read other buffer slice() values fine until this step. 
      // Like: readInt8(), readIntBE(0, 4), readBigUInt64BE(0, 8) 
...

      let FloatNumber = data.slice(start, end).readFloatBE();
      console.log('FloatNumber', FloatNumber);

...

  }

1 个答案:

答案 0 :(得分:1)

const buf = Buffer.from([0x40, 0x82, 0xe2, 0x31, 0xd6, 0xd7, 0x2e, 0x8d]);

console.log( buf.readDoubleBE(0) );
// Prints: 604.274335557087
相关问题