我需要构建一个由各种组件组成的二进制缓冲区,具体来说是几个字符串和插入字符串序列之间的 ArrayBuffer(或从中派生的 UINT8Array)。理想情况下,通过创建一个空缓冲区并按顺序附加所需的所有内容,最后获得累积的缓冲区。
我的问题是如何正确执行此操作,使用什么数据类型,以及最后如何将生成的缓冲区作为原始字节序列传递给 GM_xmlhttpRequest.data 属性。如果它只处理字符串,我可以连接它们并传递结果字符串,但不知道如何获取 ArrayBuffer 对象表示的数据内容。
最佳答案
安ArrayBuffer
无法直接访问,可以使用TypedArray
意见或 DataView
对象来操作缓冲区的字节值。您可以使用TextEncoder
和 TextDecoder
以便更轻松地操作 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/