gpt4 book ai didi

javascript - 追加 ArrayBuffer

转载 作者:IT王子 更新时间:2023-10-29 03:22:25 30 4
gpt4 key购买 nike

附加/组合 ArrayBuffer 的最佳方式是什么?

我正在接收和解析具有各种数据结构的网络数据包。传入的消息被读入 ArrayBuffers。如果部分数据包到达,我需要存储它并等待下一条消息,然后再重新尝试解析它。

目前我正在做这样的事情:

function appendBuffer( buffer1, buffer2 ) {
var tmp = new Uint8Array( buffer1.byteLength + buffer2.byteLength );
tmp.set( new Uint8Array( buffer1 ), 0 );
tmp.set( new Uint8Array( buffer2 ), buffer1.byteLength );
return tmp.buffer;
}

显然,由于 ArrayBuffers 的长度是固定的,因此您无法避免必须创建一个新缓冲区,但是是否有必要初始化类型化数组?到达后我只想能够将缓冲区视为缓冲区;类型和结构无关紧要。

最佳答案

为什么不使用 Blob ? (我意识到当时可能还没有)。

只需用您的数据创建一个 Blob,例如 var blob = new Blob([array1,array2,string,...]) 并使用FileReader(参见 this)。

检查这个:What's the difference between BlobBuilder and the new Blob constructor?而这个:MDN Blob API

编辑:

我想比较这两种方法(Blob 和问题中使用的方法)的效率并创建了一个 JSPerf:http://jsperf.com/appending-arraybuffers

好像用Blobs比较慢(其实我猜是用Filereader读取Blob最耗时)。所以现在你知道了 ;)也许当有超过 2 个 ArrayBuffer 时我会更有效率(比如从它的 block 中重建文件)。

关于javascript - 追加 ArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786128/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com