javascript - 在 JS 中构建二进制缓冲区的干净方法是什么?

标签 javascript data-conversion arraybuffer

我需要构建一个由各种组件组成的二进制缓冲区,具体来说是几个字符串和插入字符串序列之间的 ArrayBuffer(或从中派生的 UINT8Array)。理想情况下,通过创建一个空缓冲区并按顺序附加所需的所有内容,最后获得累积的缓冲区。

我的问题是如何正确执行此操作,使用什么数据类型,以及最后如何将生成的缓冲区作为原始字节序列传递给 GM_xmlhttpRequest.data 属性。如果它只处理字符串,我可以连接它们并传递结果字符串,但不知道如何获取 ArrayBuffer 对象表示的数据内容。

最佳答案

ArrayBuffer无法直接访问,可以使用TypedArray意见或 DataView对象来操作缓冲区的字节值。您可以使用TextEncoderTextDecoder以便更轻松地操作 ArrayBuffers 支持的文本。

考虑使用fetch() ,它比旧的 XMLHttpRequest 方式性能更高。 ArrayBuffer 必须序列化为字符串才能在 HTTP 请求中发送。

const encoder = new TextEncoder();
const encoded = encoder.encode('hello');
const serialized = encoded.toString();
fetch('https://example.com', {
  method: 'post',
  body: serialized
})

关于javascript - 在 JS 中构建二进制缓冲区的干净方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401416/

相关文章:

python - 有一个函数在打印时转换成它的名字

c# - 获取数字的十进制变化

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

scala - 我什么时候应该在scala中使用 "new"?

java - Android 快速 YUV420P 到 ARGB8888 转换

javascript - Fancybox 3 Ajax 类型 - 内容自动滚动到底部

javascript - 多个可拖动图表 d3.js

javascript - Appcelerator Titanium - openFileChooserDialog 不存在 : How to open a dialog to browse for a file?

multithreading - 在顺序执行的线程中使用ArrayBuffer?

javascript - 从 Iframe 创建一个新的 chrome 选项卡/窗口