标签: arraybuffer

用零初始化 Javascript ArrayBuffer

有没有一种方法可以将 ArrayBuffer 中的所有索引设置为 0,并且优化速度很快?我知道我可以进行迭代来手动执行此操作,但我想知道是否有一些内置函数可以快速执行此操作,因为我想每个动画帧执行一次。

javascript arraybuffer

3
推荐指数
1
解决办法
3738
查看次数

为什么 Array 的 Blob 比 Uint8Array 的 Blob 小?

我使用读取文件FileReader.readAsArrayBuffer,然后执行如下操作:

  var compressedData = pako.gzip(new Uint8Array(this.result));
  var blob1 = new Blob([compressedData]); // size = 1455338 bytes
  var blob2 = new Blob(compressedData);   // size = 3761329 bytes
Run Code Online (Sandbox Code Playgroud)

例如:如果结果有 4194304 字节,压缩后大小将为 1455338 字节。但由于某种原因, Uint8Array 需要包装在数组中。为什么是这样?

javascript blob arraybuffer uint8array

3
推荐指数
1
解决办法
1826
查看次数

axios response.blob 不是函数

我试图从 nodeJS 传递一个类型为“image/jpeg”的 blob 来做出反应。在nodejs端,我使用arraybuffer传递数据,在react端,我尝试使用res.blob检索它,它通常应该将数据转换回来。问题是 axios 返回一个错误,指出 res.blob() 不是函数。那么我如何在反应端检索它呢?任何回复将不胜感激,如果我没有充分描述我的问题,我深表歉意。

这是我在nodejs中的代码

  res.type(blob.type);
  blob.arrayBuffer().then((buf) => {
    res.end(Buffer.from(buf));
  });
Run Code Online (Sandbox Code Playgroud)

这是我的反应代码。

    axios
    .post(imageUrl)
    .then((res) => {
      return res.blob();
    })
    .then((blob) => {
      storageRef
        .child(path + filename)
        .put(blob)
        .then(function (snapshot) {
          return snapshot.ref.getDownloadURL();
        })
Run Code Online (Sandbox Code Playgroud)

blob node.js arraybuffer reactjs axios

3
推荐指数
1
解决办法
1万
查看次数

Scala中的有限可生长数组

我希望能够将类似数组的结构增长到最大尺寸,之后每次添加新元素时,最旧的(第一个)元素将从结构中删除.我不知道最好的方法是什么,但一种方法是扩展ArrayBuffer类,并覆盖+ =运算符,这样如果达到最大大小,每次新的时候都会删除第一个元素一个是添加.我还没想出如何正确扩展集合.到目前为止我所拥有的是:

class FiniteGrowableArray[A](maxLength:Int) extends scala.collection.mutable.ArrayBuffer {
    override def +=(elem:A): <insert some return type here> = {
        // append element
        if(length > maxLength) remove(0)
        <returned collection>
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以建议一条更好的道路和/或帮助我吗?注意:我需要在+ =操作之间多次任意访问结构中的元素.

谢谢

scala extend arraybuffer

2
推荐指数
1
解决办法
451
查看次数

我什么时候应该在 Scala 中使用“new”?

当我使用时ArrayBuffer,我应该使用:

val arr = new ArrayBuffer[Int]
Run Code Online (Sandbox Code Playgroud)

但是当我使用时Map,我应该使用:

val map = Map[Int, Int]()
Run Code Online (Sandbox Code Playgroud)

collections dictionary scala scala-collections arraybuffer

2
推荐指数
1
解决办法
1040
查看次数

使用Web Audio的本地文件将mp3作为ArrayBuffer加载

我希望加载一个mp3本地文件,然后使用库进行处理,我不能使用XMLHttpRequest,然后我使用下一个代码来读取本地mp3文件:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body onload="carga();">
        <input id="audio_file" type="file" accept="audio/*" />
        <audio id="audio_player" />
        <script>
            function carga() {

                audio_file.onchange = function(){
                var files = this.files;
                console.log(files);
                alert(files);
                var file = URL.createObjectURL(files[0]); 
                console.log(file);
                alert(file);
                audio_player.src = file; 
                audio_player.play();
                                                };
            }
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但XMLHttpRequest返回ArrayBuffer,我的代码返回一个FileList,我需要一个ArrayBuffer进行下一次处理,如何将本地mp3文件加载为ArrayBuffer?

javascript audio html5 arraybuffer web-audio-api

2
推荐指数
1
解决办法
5588
查看次数

JavaScript-将数组缓冲区转换为字符串

标题说明了一切.我有一个jquery序列化数据,如下所示:

tarid=value&tarname=value&sel=3
Run Code Online (Sandbox Code Playgroud)

我想将它转换为ArrayBuffer.之后,我还需要再次将其恢复原状.那我该怎么办呢?

javascript typed-arrays arraybuffer

2
推荐指数
1
解决办法
2万
查看次数

如何在 JavaScript 中将 ArrayBuffers 与 DataViews 一起使用

我见过的关于 ArrayBuffer 的唯一真正的教程来自HTML5Rocks。但我特别想知道如何操作单个字节。例如,Mozilla 的 ArrayBuffers 上的这个卡通显示了一个包裹在 Uint8Array 视图中的 ArrayBuffer 的图像:

在此处输入图片说明

它给人的感觉是你可以用 ArrayBuffer 做到这一点:

var x = new ArrayBuffer(10)
x[0] = 1
x[1] = 0
...
x[9] = 1
Run Code Online (Sandbox Code Playgroud)

即手动设置字节。但是我还没有看到任何关于这种功能的文档。相反,您似乎应该使用 TypedArray 组件之一或 DataView:

var x = new ArrayBuffer(100)
var y = new DataView(x)
y.setUint32(0, 1)
console.log(y.getUint32(0)) // 1
console.log(x[0]) // undefined
Run Code Online (Sandbox Code Playgroud)

但是,在使用 DataView 操作 ArrayBuffer 之后,您似乎无法直接访问 ArrayBuffer 上的任何字节。

尝试使用 ArrayBuffer 和 DataView 进行其他操作时,我感到困惑:

var x = new ArrayBuffer(100)
var y = new DataView(x)
y.setUint32(0, 1)
y.setUint32(1, 2) …
Run Code Online (Sandbox Code Playgroud)

javascript bit-manipulation typed-arrays arraybuffer

2
推荐指数
1
解决办法
4068
查看次数

使用 emscripten 如何获取 C++ uint8_t 数组到 JS Blob 或 UInt8Array

在 emscripten C++ 中,我有

class MyClass {
public:
   MyClass() {}
   std::shared_ptr<std::vector<uint8_t>> buffer;
   int getPtr() {
      return (int)(buffer->data());
   }
   int getLength() {
      return buffer->size();
   }
};
EMSCRIPTEN_BINDINGS() {
    class_<MyClass>("MyClass").constructor()
      .function("getLength",&MyClass::getLength)
      .function("getPtr",&MyClass::getPtr,
                allow_raw_pointers());
}
Run Code Online (Sandbox Code Playgroud)

我可以从 JS 调用 getLength() 和 getPtr() 但我不知道如何让 JS 将其视为 ArrayBuffer 以作为 Blob 下载。

如何将缓冲区数据以某种形式导入 JS,然后我可以使用类似于https://github.com/kennethjiang/js-file-download/blob/master/file-download.js 的代码下载它。

c++ arraybuffer emscripten

2
推荐指数
1
解决办法
4427
查看次数

如何有效地从 JS ArrayBuffer 读取结构(浏览器)?

假设我有一个以下形式的结构

typedef struct {
  uint32_t intensity;
  uint16_t ring;
  float32_t x;
  float32_t y;
  float32_t z;
} Point;
Run Code Online (Sandbox Code Playgroud)

(总共 18 个字节),我在 ArrayBuffer 中有一个包含数万个 18 字节结构的巨大数组。

如何有效地迭代它们而不在循环中烦躁地调用“new DataView()”构造函数?

这是在浏览器中,而不是 NodeJS。

javascript performance struct arraybuffer

2
推荐指数
1
解决办法
688
查看次数