【问题标题】:Buffer + writeUInt32LE from NodeJS to Javascript从 NodeJS 到 Javascript 的缓冲区 + writeUInt32LE
【发布时间】:2016-07-23 14:24:26
【问题描述】:

所以我有这个功能,来自 NodeJS 脚本:

function WearToFloat(value)
{
    buf = new Buffer(4);
    buf.writeUInt32LE(+value, 0);
    return buf.readFloatLE(0).toString();
}

我需要将它翻译成任何网络浏览器都可以读取的纯 Javascript。

不幸的是,我对 NodeJS 和 JS 中的缓冲区一无所知,并且无法通过文档弄清楚。

这个函数的目的是将一个看起来像1054356424的值转换成一个从0到1的浮点数(在本例中为0.4222700595855713)

有什么线索吗?

编辑:似乎已经问过同样的问题here,但只使用了一个库,我不想为此加载一个完整的库,必须有一个简单的方法来转换这个 NodeJS 函数变成一个 Javascript 的。

【问题讨论】:

标签: javascript node.js buffer arraybuffer


【解决方案1】:

找到了!

function WearToFloat(value)
{
    var buffer = new ArrayBuffer(4);
    var dataview = new DataView(buffer);
    dataView.setUint32(0,value);
    return dataView.getFloat32(0);
}

【讨论】:

  • 您可能需要将setUInt32 第三个参数设置为true,以便将字节序行为切换为“小字节序”。 Doc说,默认情况下假定大端。带有第二个参数的 getFloat32 也是如此。 ;)
猜你喜欢
  • 2017-02-28
  • 2011-09-06
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多