node——buffer
buffe方便数据的传输,可一次性传输一部分数据
一.类型介绍
1.javascript语言没有读取或操作二进制数据的机制。
2.Node.js中引入了Buffer类型可以使我们操作TCP流或文件流
3.Buffer类型的对象类似于整数组,但是Buffer的大小是固定的、且在V8堆外分配物理内存。BUffer的大小在被创建时确定,且无法调整(buf.length是固定的,不允许被修改)
4.Buffer是全局的,所以使用的时候无需require的方式来加载
二,创建BUffer对象
1.通过Buffer.from()创建一个Buffer对象
Buffer.from(string[,encoding])
var arry=[0x68,0x6c,0x6c,0x6f,0x20]; var buf=Buffer.from(arry);//转为Buffer类型 console.log(buf); console.log(buf.toString('utf8'));
var buff=Buffer.from('你好!');
console.log(buff);
console.log(buff.toString('utf8'));
2.拼接多个Buffer对象为一个对象
var arry=[0x68,0x6c,0x6c,0x6f,0x20]; var buf=Buffer.from(arry);//转为Buffer类型 var buff=Buffer.from('你好!'); var bufferlist=[buf,buff]; var buffe=Buffer.concat(bufferlist); console.log(buffe.toString('utf8'));
3.获取字符串对应字节个数
一个中文3个字节,一个数字或英文或符号1个字节
var len=Buffer.byteLength('hello世界!'); console.log(len);
len=12
4.判断一个对象是否为Buffer类型对象
Buffer.isBuffer(obj)
返回是true则为Buffer,反之不是
5.获取Buffer中对应的字节(buf为对象名)
buf[index]
类似数组
6.获得Buffer对象中的字节个数(buf为对象名)
buf.length
buf.length属性不可修改
7.Buffer对象与编码
Node.js目前支持的编码如下:
1.ascil
2.utf8
3.utf16le
。ucs2是utf16le的别名
4.base64
5.latin1
。binary是Latin1的别名
6.hex
。用两位16进制来表示每个字节
var buf1=Buffer.from('你好世界,Hello World!','utf8'); console.log(buf1.toString('hex')); console.log(buf1.toString('base64')); console.log(buf1.toString('utf8'));