JavaScript中arraybuffer

读取文件的过程需要二进制,但是JavaScript中没有明确的二进制字节位的概念,类型化的数组概念就是二进制传输过程的接口。

var buffer=new ArrayBuffer(4);//长度为四个字节
var a=new Uint8Array(buffer);
a[0]=01;
a[1]=02;
a[2]=03;
a[3]=04;
定义了4个字节长度的buffer,内容为[0x01,0x02,0x03,0x04]
var b=new Uint16Array(buffer);
console.log(b);//513,1027

输出结果我刚开始真的是百思不得其解,首先uint的方法主要用于arraybuffer中的内容不能在浏览器界面显示使用,每个字节的长度8位,然后定义16位的b,那么读取的过程就是a[3]a[2],a[1]a[0],读取的结果用十进制的形式表示,所以也就有了接下来的各种类型转换

new Uint8Array;//8位无符号的整数
new Uint16Array;//16位无符号的整数
new Uint32Array;//32位无符号的整数
new Int8Array;//8位有符号的整数
new Int16Array;//16位有符号的整数
new Int32Array;//32位有符号的整数

但是在转换16位或者32位时,控制台总是报错,但是8位不会报错,举个例子,假设buffer的length为105,就是105个字节,8位的读就是一次读取一个字节,16位一次读两个字节,读到最后时候就剩一个字节,就报错了,32位也是如此。所以我一般都会选择8位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容