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 使用DataView写本地二进制文件时读取问题