如何将浮点数转换为字节数组?

8
我希望将类似于26,4的浮点值转换为字节数组,例如:[51,51,-45,65]。另一个例子:32,2 > [-51, -52, 0, 66]。我可以在Arduino C++和Python中完成此操作,但我不知道如何在JavaScript中实现。
我在HTML页面中有一个输入字段,在将其发送到Python脚本之前,我想写入我的浮点值并对其进行解码。
请问这是否可能?

可能是Convert "float" to bytes in Javascript without Float32Array的重复问题。 - Scott Sauyet
2
@ScottSauyet:为什么不用类型化数组?它们可以让事情变得更简单... - Bergi
你说得对。这不是那个的重复。是的,类型化数组显然更容易。我撤回了我的关闭投票。 - Scott Sauyet
@Bergi 类型化数组只适用于ES6。旧版本没有它们。但是,这些问题是相关且互补的,但不是重复的。 - DarkCygnus
1个回答

13

类型化数组

首先创建一个Float32Array,它是在实际字节缓冲区(ArrayBuffer)之上的视图。我们可以通过单个操作来分配缓冲区和视图:

var farr = new Float32Array(2);  // two indexes each 4 bytes

存储浮点数。这些将以IEEE-754格式存储:

farr[0] = 26.4;
farr[1] = 32.2;

现在我们可以为基础缓冲区添加另一个视图,这次是带符号的8位视图:

var barr = new Int8Array(farr.buffer);   // use the buffer of Float32Array view

console.log(barr);
// -> 51,51,-45,65,-51,-52,0,66

下面是实时演示

var farr = new Float32Array(2);  // two indexes each 4 bytes
farr[0] = 26.4;
farr[1] = 32.2;

var barr = new Int8Array(farr.buffer);   // use the buffer of Float32Array view
console.log(barr);

document.querySelector("div").innerHTML =  barr[0]+","+barr[1]+","+barr[2]+","+barr[3]+","+barr[4]+","+barr[5]+","+barr[6]+","+barr[7];
<div></div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接