【问题标题】:What's the clean method to build binary buffer in JS?在 JS 中构建二进制缓冲区的干净方法是什么?
【发布时间】:2019-10-15 19:25:35
【问题描述】:

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

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

【问题讨论】:

    标签: javascript data-conversion arraybuffer


    【解决方案1】:

    不能直接访问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
    })
    

    【讨论】:

    • 好的,谢谢。 TextEncoder() 对象是否能够被动态操作(添加新序列),您能否举例说明如何通过 ArrayBuffer 类型的变量扩展 encoded? (假设它包含 uint8s 的原始序列)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2010-09-06
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多