也许它已经晚了,或者也许是为了,但我只是阅读了ArrayBuffer的文档并且想不出任何它会真正有用的东西。
有人可以启发我吗?
有没有任何人能想到的不涉及图像的用途?
基本上 ArrayBuffer 用于保存二进制数据。例如,它可以是图像的二进制数据。
在其他语言中,缓冲区被证明非常有用。是的,当然它比其他数据类型更难理解/使用。
ArrayBuffer 可用于获取jpg 图像(RGB 字节)的数据,并通过添加alpha 字节(即RGBA)从中生成一个png。
Mozilla 网站在这里对 ArrayBuffer 进行了少量使用
处理复杂的数据结构
通过将单个缓冲区与不同类型的多个视图组合,从缓冲区的不同偏移量开始,您可以与包含多种数据类型的数据对象进行交互。例如,这使您可以与来自WebGL的复杂数据结构、数据文件或您在使用js-ctypes时需要使用的 C 结构进行交互。
考虑这个 C 结构:
struct someStruct { unsigned long id; char username[16]; float amountDue; };
您可以访问包含这种格式的数据的缓冲区,如下所示:
var buffer = new ArrayBuffer(24); // ... read the data into the buffer ... var idView = new Uint32Array(buffer, 0, 1); var usernameView = new Uint8Array(buffer, 4, 16); var amountDueView = new Float32Array(buffer, 20, 1);
然后,您可以访问,例如,到期金额
amountDueView[0]
。注意: C 结构中的数据结构对齐是平台相关的。对这些填充差异采取预防措施和注意事项。
AnArrayBuffer
是 RAM 中的一大块二进制数据。有几种方法可以“打开”ArrayBuffer
阅读和写作:
除了图像之外,它还可以用于精确构造和破坏 UDP 等协议中使用的低级网络数据包。