我有一个带有类似于SO[0.0028808217, -0.027968751, -0.029748825]的浮点数的JS数组,并使用以下函数将其转换为Float32缓冲区:

function toFloat32Buffer(array) {
  return Buffer.from(new Float32Array(array).buffer)
}

我面临的问题是将Float32缓冲区转换回JS数组,这样我就可以使用与原始数组相同的值.

我试过了

function toJSArray(buffer) {
 const newBuffer = Buffer.from(buffer) 
 const floatArray = new Float32Array(newBuffer)

 return Array.from(floatArray)
}

function toFloat32Buffer(arr) {
   return Buffer.from(new Float32Array(arr).buffer)
}

const array = [0.0028808217, -0.027968751, -0.029748825]
const bufferFromFloat32 = toFloat32Buffer(array);
const array2 = toJSArray(bufferFromFloat32);

console.log('array', array)
console.log('array2', array2)

arrayarray2具有不同的值.我应该如何转换回缓冲区以获得与原始数组相同的值?我在NodeJS中运行此程序

推荐答案

这是另一种解决方案.考虑使用Allc

 function bufferToArray(buffer, size) {
    let arr = [];
    for (let i = 0; i < buffer.length / size; i++)
      arr.push(buffer.readDoubleLE(i * size));
    return arr;
  }

  function arrayToBuffer(arr, size) {
    const buffer = Buffer.allocUnsafe(size * arr.length);
    arr.map((val, index) => buffer.writeDoubleLE(val, size * index));
    return buffer;
  }

  let array = [0.0028808217, -0.027968751, -0.029748825];
  const size = Float64Array.BYTES_PER_ELEMENT; // double-precision

  const buffer = arrayToBuffer(array, size);
  const array2 = bufferToArray(buffer, size);

  console.log(array); // [0.0028808217, -0.027968751, -0.029748825]
  console.log(array2); // [0.0028808217, -0.027968751, -0.029748825]

Javascript相关问答推荐

vscode扩展-webView Panel按钮不起任何作用

Redux查询多个数据库Api reducerPath&

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

WebRTC关闭navigator. getUserMedia正确

我在我的Java代码中遇到了问题,代码的一部分看不到先前定义的对象

我可以使用空手道用户界面来获取网页的当前滚动位置吗?

Next.js服务器端组件请求,如何发送我的cookie token?

当输入字段无效时,我的应用程序不会返回错误

确保函数签名中的类型安全:匹配值

按下单键和多值

如何防止ionic 输入中的特殊字符.?

更新Redux存储中的对象数组

FireBase云函数-函数外部的ENV变量

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

需要从对象生成列表

:host::ng-Deep不将样式应用于material 复选框

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据

已在EventListener中更新/更改异步的React.js状态对象,但不会导致组件重新呈现

使用导航时,路径的所有子组件都必须是路径

try 导入material 时出现错误NG0203