NodeJS读取缓冲区二进制文件以浮动

Posted

技术标签:

【中文标题】NodeJS读取缓冲区二进制文件以浮动【英文标题】:NodeJS Reading Buffer Binary To Float 【发布时间】:2020-12-31 22:29:34 【问题描述】:

我有一个包含自定义字节信息的大型 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);

...

  

【问题讨论】:

readFloatBE() 需要 32 位输入,但您的切片缓冲区是 64 位。你不应该使用readDoubleBE(),它需要 64 位。 太棒了!我只是脑残,照着面子记笔记???? 新年快乐???? 兄弟新年快乐???????????? 【参考方案1】:
const buf = Buffer.from([0x40, 0x82, 0xe2, 0x31, 0xd6, 0xd7, 0x2e, 0x8d]);

console.log( buf.readDoubleBE(0) );
// Prints: 604.274335557087

【讨论】:

以上是关于NodeJS读取缓冲区二进制文件以浮动的主要内容,如果未能解决你的问题,请参考以下文章

nodejs-09-Buffer

NodeJS 将二进制缓冲区写入文件

NodeJS中Buffer模块详解

nodejs 使用DataView写本地二进制文件时读取问题

将二进制 NodeJS 缓冲区转换为 JavaScript ArrayBuffer

NodeJs进行文件的读取