简体   繁体   English

将4个二进制字节转换为单精度浮点数

[英]Convert 4 binary bytes as single-precision float to Number

I have a single-precision, big-endian floating point number stored in 4 binary bytes that I'd like to decode into a JS Number . 我有一个单精度的big-endian浮点数,存储在4个二进制字节中,我想将其解码为JS Number The bytes were generated using Ruby's Array#pack method like: 这些字节是使用Ruby的Array#pack方法生成的,例如:

[100.32].pack('g')  # "\x42\xC8\xA3\xD7"

Using the npm binary package I can decode these bytes as a 32-bit unsigned integer: 使用npm binary包,我可以将这些字节解码为32位无符号整数:

let binary = require('binary');  // npm install binary
let buf = new Buffer([0x42,0xc8,0xa3,0xd7]);
let val = binary.parse(buf).word32bu('foo').vars.foo;
console.log(val);
// 1120445399

…but that doesn't help me. …但这对我没有帮助。 How can I convert either 1120445399 or [0x42,0xc8,0xa3,0xd7] into the floating point number 100.32 ? 如何将1120445399[0x42,0xc8,0xa3,0xd7]转换为浮点数100.32

It looks like it's stored as a float, which is 32-bit. 看起来它存储为32位浮点数。 Node can already handle these common number parsing/writing scenarios. 节点已经可以处理这些常见的数字解析/写入方案。 In this particular case, you can just use buf.readFloatBE(0) to convert the 4 bytes. 在这种情况下,您可以只使用buf.readFloatBE(0)转换这4个字节。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从 .NET 的 BinaryWriter 序列化的四个字节中读取单精度浮点数 - How to read a single-precision floating-point number from four bytes serialized by .NET's BinaryWriter 如何确定Javascript Number是否在单精度范围内? - How to determine if a Javascript Number is in single-precision range? 从IEEE 754单精度(32位)浮点创建字节(表示字符串) - Create bytes from IEEE 754 single-precision (32-bit) floating point (string represented) javascript - 将数字转换为精度为 2 的浮点数 - javascript - convert number to a float with precision of 2 将 javascript 数字转换为浮点数(单精度 IEEE-754)并接收 integer 位 - Convert javascript number to float (single precision IEEE-754) and receive integer bits 将数字转换为16位浮点数(存储为字节)并返回? - Convert a number into a 16-bit float (stored as bytes) and back? 将已经四舍五入的浮点数字符串化,然后将其转换回数字会产生进一步的精度误差吗? - Would stringify an already rounded float number and then convert it back to number create further precision error? 将点二进制转换为浮点数 - Convert point binary to float 如何将浮点数转换为字节数组? - How to convert a float to an array of bytes? 如何在javascript中将双精度(64位)数转换/存储到32位浮点数或UInt16 - How to convert/store a double precision (64bit) number to a 32 bit float or a UInt16 in javascript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM