问题标签 [arraybuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 发布包装在对象内的 ArrayBuffer
我写了一点 AJAX 来获取文件客户端,以便我可以将其发布回服务器。被反对的对象作为ArrayBuffer
. 但是,在将此二进制文件发布回服务器进行保存后,我需要在此文件中包含一些元数据。我已经尝试将ArrayBuffer
其他字符串包装在和对象中,但是当我检查数据服务器端时,它似乎只传输了ArrayBuffer
.
我尝试ArrayBuffer
通过此答案将其转换为字符串:
https://stackoverflow.com/a/11058858/449511。
但是, myArrayBuffer
的字节长度是 519843,这会导致异常:
未捕获的 RangeError:ArrayBuffer 长度减去 byteOffset 不是元素大小的倍数。
我的理解ArrayBuffers
是稀疏的,我已经阅读了 MDN 文档,但找不到太多其他内容。我很感谢有关如何将其转换ArrayBuffer
为字符串或将其包装ArrayBuffer
成对象的任何其他资源或想法。
这是我的 AJAX 代码片段:
javascript - WebSockets 和在发送时重用 ArrayBuffers
我正在使用 Uint8Arrays 和 ArrayBuffers 发送二进制数据。我可以通过每次创建一个新的 Uint8Array 和 ArrayBuffer 来成功发送它。
出于性能目的(减少垃圾等),我想为下一条消息重用相同的 Uint8Array 和 ArrayBuffer 。在这种情况下,每条消息都具有相同的字段,因此字节长度不是问题。我只是覆盖它。
但是,重用会导致发送的数据不正确。
我最好的猜测是,我正在为下一条消息修改 ArrayBuffer,而前一条消息仍在发送过程中。这是问题吗?如果是这样,有什么方法可以检测到 WebSocket 何时不再使用 ArrayBuffer 以便我可以将其汇集起来?如果不是,还有什么可能导致这种行为?
谢谢!
javascript - Web Audio API 附加/连接不同的 AudioBuffers 并将它们作为一首歌曲播放
我一直在使用 Web Audio API,我正在尝试加载歌曲的多个部分并将它们附加到一个新的 ArrayBuffer 中,然后使用该 ArrayBuffer 将所有部分作为一首歌曲播放。在以下示例中,我使用相同的歌曲数据(这是一个小循环)而不是歌曲的不同部分。
问题是它仍然只播放一次而不是两次,我不知道为什么。
javascript - 如何使用 javascript 加密和解密 Uint8Array?
我想要一个 Uint8Array 的加密和解密,因为我已经从这个链接下载了 CryptoJS 库。
我已经在一个虚拟字符串上测试了 aes 密码算法,它工作正常。
现在我希望它在 Uint8Array 上实现它。这个数组保存了一个视频文件数据。
由于加密和解密适用于字符串,因此我必须将其转换为字符串,因为我已经引用了在 stackoverflow 上发布的这个问题,请单击此处
加密代码是:
但是当我运行代码时,出现以下错误:
我如何使它工作?
javascript - 如何在 javascript 单元测试期间加载二进制文件?
在我的应用程序中,用户使用 HTML5 拖放来处理二进制文件。这部分代码工作正常。在 chrome 中,我拖动一个二进制文件并使用 FileReader 创建一个 arrayBuffer。这一切似乎都很好。我正在为此功能编写测试,但我很茫然。如何将二进制文件加载到我的单元测试中?对于我正在测试的那段代码,我只需要一个 arrayBuffer。目前,我正在手动创建 arrayBuffer,但这不是一个可持续的解决方案。为了使我的测试有效,我需要能够随时输入一个新的二进制文件并进行新的测试。我的测试环境是testacular+jasmine。
javascript - 如何在 js 中使用 arraybuffer 和类型化数组?
我有很多 0 到 255 之间的数字,我想将它们存储在一个数组中。Uint8array 是最好的,但我不知道如何使用它,也找不到任何有用的教程。一旦它们存储在数组中,如何修改/删除它们,或者添加一些新元素?
javascript - 哪个ArrayBufferView
我正在通过 XHR 检索 ArrayBuffer,并希望使用 FileWriter 将其保存到 FileSystem API。FileWriter 需要一个 Blob,而 Blob 构造函数不会采用 ArrayBuffer,它采用 ArrayBufferView。
有很多 ArrayBufferViews 可供选择,我怎么知道哪个是正确的?
javascript - 通过数据通道发送 ArrayBuffer:DOM 异常 12
我正在尝试通过两个浏览器之间的数据通道发送一些数据。在我的代码中,我有:
在此示例中,数据通道已打开且正常工作(其类型为 WebKitDatachannel)。当我发送它时,我收到此异常:
它有什么问题?
javascript - 在浏览器中接收 WebSocket ArrayBuffer 数据 - 改为接收字符串
我有一个 node.js 服务器应用程序和一个浏览器客户端。发送ArrayBuffer
数据浏览器 - > 服务器工作正常,但服务器 - > 浏览器导致"[object ArrayBuffer]"
接收到一个字符串。这发生在 Chrome 和 Firefox 的最新版本中。
服务器:
客户:
我究竟做错了什么?
编辑:
从 node.js websocket 源:
因此,如果您使用Uint8Array
,它会将数据作为字符串发送,而不是sendBytes
像sendBytes
需要Buffer
对象那样使用 。正如下面的答案,我需要sendBytes
. 由于我无法传递ArrayBuffer
to sendBytes
,因此我在服务器上执行了此操作:
现在它起作用了。
结论:
虽然 Chrome 和 Firefox websockets.send()
将Uint8Array
缓冲区作为二进制数据,但似乎 node.js websockets 将其作为string
数据发送,并且您需要一个Buffer
缓冲区来发送二进制数据。
javascript - 如何从 Blob 转到 ArrayBuffer
我正在研究 Blob,我注意到当您有一个 ArrayBuffer 时,您可以轻松地将其转换为 Blob,如下所示:
我现在的问题是,是否可以从 Blob 转到 ArrayBuffer?