频道栏目
首页 > 资讯 > JavaScript > 正文

node.js中全局对象Buffer的使用方式讲解

17-11-30        来源:[db:作者]  
收藏   我要投稿

Buffer是全局对象,可以直接使用,不需要require('buffer')

三种使用Buffer的方式:

1.创建一个20字节大小的Buffer实例:长度一旦确定,就不能修改,与数组不同

let bf = new Buffer(20);
console.log(bf.length);//20 是指字节大小,与内容无关

2.参数可以使数组:数组成员必须是整数值

let bf = new Buffer([0x30,97,0x61,0xe5,0x89,0x8d]);
console.log(bf);//
console.log(bf.toString());//0aa前

数组中的数值转化为二进制存入到bf中,输出bf时,显示的是16进制,bf中的二进制表示各种数字、字母、符号和文字等,通过toString()可以显示出来

3.第一个参数是字符串,第二个参数是编码类型,默认是utf8

let bf = new Buffer('Hello');
console.log(bf);//将字符串Hello的二进制编码存入bf
console.log(bf.length);//5 表示字节长度
console.log('Hello'.length);//5 表示字母的个数
console.log(bf.toString());//Hello
let str = '前端'
let bf = new Buffer(str);
console.log(bf);//
console.log(str.length);//2
console.log(bf.length);//6表示字节长度

关于utf8中的字符的字节长度:英文字母是1字节,中文汉字是3字节

UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

‘前’字的utf8中是e5 89 8d ,e5转化成二进制11100101,前面有三个1,占3个字节

相同字符串UTF-16所占字节数最多,一个英文和一个中文汉字都是占4个字节。

Buffer实例方法:

write():它的第一个参数是所写入的内容,第二个参数(可省略)是所写入的起始位置(默认从0开始),第三个参数(可省略)是写入的长度,第四个参数是编码方式默认为utf8。功能与数组的push()方法功能相似

var buf = new Buffer(5);
buf.write('He');
buf.write('l', 2);
buf.write('lo', 3);
console.log(buf.toString());//Hello

slice():和数组的slice()方法相似:区别是通过buffer实例的slice()方法得到的新的对象与原来的对象存的内容指向相同,bf1修改了,bf也会发生变化。

let bf = new Buffer('Hello World!');
let bf1 = bf.slice(6,11);
console.log(bf.toString());//Hello World!
console.log(bf1.toString());//World
let bf = new Buffer('Hello');
let bf1 = bf.slice(0,2);
console.log(bf);//
console.log(bf1);//
bf1[0]=20;
console.log(bf);//
console.log(bf1);//

copy()方法:新的对象与原有的对象不会相互影响:

let bf = new Buffer('Hello');
let bf1 = new Buffer(12);
bf.copy(bf1);
console.log(bf);//
console.log(bf1);//
bf1[0]=2;
console.log(bf);//
console.log(bf1);//

toJSON():

let bf = new Buffer('Hello');
console.log(bf);//
console.log(bf.toJSON());//{ type: 'Buffer', data: [ 72, 101, 108, 108, 111 ] }
相关TAG标签
上一篇:CodeForces877D【BFS】“编程题”
下一篇:Linux中top命令的用法详解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站