如何将float转换为字节数组?

Bir*_*ibu 5 javascript

我想将float值26,4转换为字节数组.像:[51,51,-45,65].另一个例子:32,2> [-51, -52, 0, 66].

我可以在Arduino C++和Python中做到这一点,但我不知道如何在JavaScript中做到这一点.

我在HTML页面中有一个输入字段,我想在写入我的浮点值并在将其发送到Python脚本之前对其进行解码.

可能吗?

小智 7

键入的数组

首先创建一个Float32Array在实际字节缓冲区(ArrayBuffer)之上的视图.我们可以在一个操作中分配缓冲区和视图:

var farr = new Float32Array(2);  // two indexes each 4 bytes
Run Code Online (Sandbox Code Playgroud)

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

farr[0] = 26.4;
farr[1] = 32.2;
Run Code Online (Sandbox Code Playgroud)

现在我们可以为底层缓冲区添加另一个视图,这次是签名的8位视图:

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

console.log(barr);
// -> 51,51,-45,65,-51,-52,0,66
Run Code Online (Sandbox Code Playgroud)

现场演示如下

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];
Run Code Online (Sandbox Code Playgroud)
<div></div>
Run Code Online (Sandbox Code Playgroud)