首页 > 解决方案 > 如何从 .NET 的 BinaryWriter 序列化的四个字节中读取单精度浮点数

问题描述


所以,我正在尝试构建一个类来从缓冲区读取数据,就像 .NET 的 BinaryReader 一样。这是在我使用 Electron 构建的地图编辑器应用程序中读取 Celeste 的地图格式(以二进制形式存储)(因此我隐式使用 Node.JS 和 JavaScript)。
我使用 .NET 参考源对所有必要的数据读取器进行了编码,但我不知道如何读取存储为四个字节的单精度浮点数。
在参考源中,有一些代码将四个字节的内存地址作为无符号 4 字节整数获取,然后将该地址读取为单精度浮点数,这适用于 .NET,但在 JavaScript(或 Node .JS)。
我当前的课程代码可以在Hastebin上找到,如果我没有提供足够的信息,因为这是我的第一个问题,或者我很晚才将答案标记为正确,我深表歉意。

标签: javascriptc#node.jsbinary

解决方案


这可以通过 node.js 实现。直接取自文档

var buf = new Buffer(4);
 
buf[0] = 0x00;
buf[1] = 0x00;
buf[2] = 0x80;
buf[3] = 0x3f;
 
console.log(buf.readFloatLE(0));
 
// 0x01

whereLE指的是小端。有一个对应readFloatBE于大端的。


推荐阅读