也许它已经很晚了,或者也许是为了这个缘故,但我只是阅读了ArrayBuffer的文档而无法想到它会对它有用的一件事.
有人可以开导我吗?
是否有任何人可以想到的不涉及图像的用途?
Imd*_*dad 48
基本上ArrayBuffer用于保存二进制数据.例如,它可以是图像的二进制数据.
在其他语言中,缓冲区被证明非常有用.是的,当然,理解/使用它比其他数据类型有点困难.
ArrayBuffer可用于获取jpg图像(RGB字节)的数据,并通过添加alpha字节(即RGBA)从中产生png.
Mozilla网站在这里给出了一点使用ArrayBuffer
向下滚动以查找该部分 amountDueView[0]
我从那里复制了文字:
使用复杂的数据结构
通过将单个缓冲区与不同类型的多个视图组合,从不同的偏移量开始到缓冲区,您可以与包含多种数据类型的数据对象进行交互.例如,这使您可以在使用js-ctypes时与WebGL,数据文件或C结构中的复杂数据结构进行交互.
考虑这个C结构:
struct someStruct {
unsigned long id;
char username[16];
float amountDue;
};
Run Code Online (Sandbox Code Playgroud)
您可以访问包含以下格式的数据的缓冲区,如下所示:
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);
Run Code Online (Sandbox Code Playgroud)
然后,您可以访问,例如,到期金额amountDueView[0].
AnArrayBuffer是 RAM 中的一组二进制数据。您可以ArrayBuffer使用类型化数组或DataView.
类型化数组(例如Uint16Array)可以通过将缓冲区视为单个整数数组来读取和写入缓冲区。他们不让你控制字节序;它使用 CPU 的首选字节序。使用Uint8Array对于控制单个字节很有用(这不受字节顺序的影响)。
DataView并不那么简单,但它为您提供了更多控制权。它使您可以完全控制字节序、整数大小和字节索引(例如,您可以在索引处访问 32 位整数,即使它不能被 32 位整除)。每次读写一个整数时都可以指定这些东西DataView。
更多信息:https : //javascript.info/arraybuffer-binary-arrays
| 归档时间: |
|
| 查看次数: |
22838 次 |
| 最近记录: |